我在App烧瓶应用程序上使用pg8000,以便能够处理CSV文件并将其插入PSQL实例(托管在AZURE上)。
为什么我要使用pg8000而不是psycopg2?->,因为app引擎不支持psycopg2。
到目前为止,pg8000的文档并没有像psycopg2那样声明这样的函数。我还没有找到一个例子来实现这一点,在这样或任何其他地方,包括文档。
有人知道这是否可能吗?
发布于 2017-12-11 17:25:53
从源代码的角度来看,似乎没有一种直接导入CSVs的方法,代码似乎也没有任何内置的INSERT查询包装器,因此可以
您确实可以选择手动使用CSV读取器和使用executemany。
import csv
import pg8000
conn = pg8000.connect(user="postgres", password="C.P.Snow")
cursor = conn.cursor()
command = 'INSERT INTO book (title) VALUES (%s), (%s) RETURNING id, title'
with open('my-data.csv', 'rb') as fl:
data = list(csv.reader(fl))
conn.executemany(command, data)请注意,根据数据的大小,最好使用islice
with open('my-data.csv', 'rb') as fl:
reader = csv.reader(fl)
slice = itertool.islice(reader, 100)
while slice:
conn.executemany(command, slice)
slice = itertool.islice(reader, 100)发布于 2018-02-13 10:14:10
正如在另一个问题这里中所建议的,您可以在对csv文件应用逻辑之前和在使用csv方法之前使用next方法。
很抱歉,事先没有插入作为对前一个答案的补充,但我没有足够的点这样做。
我也有同样的问题,我用下面的方法解决了这个问题。请注意,对我来说,正确的执行方法是在cursor对象上,而不是在conn上。
conn = pg8000.connect(user='username', password='password', host='host', port=5432, database='database name')
cursor = conn.cursor()
command = "INSERT INTO public.salesforce_accounts (field1, field2, field3, field4, field5, field6) VALUES (%s, %s, %s, %s, %s, %s)"
with open('test.csv', 'r') as file:
next(file)
data = list(csv.reader(file))
cursor.executemany(command, data)https://stackoverflow.com/questions/47757873
复制相似问题