我在python中开始并想编写此脚本以将数据从csv插入postgresql表
import csv
import psycopg2
conn_string="dbname='Training'
user='admin' password='admin' "
conn=psycopg2.connect(conn_string)
cursor=conn.cursor() print "Connected!\n"
with open('C:\Users\Mostafa\Downloads\New folder\product.product_.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
Query="insert into product_template (name) VALUES ('"+str( row )+"') RETURNED id"
cursor.excute(Query)
conn.commit()
print "Done!\n"
当我尝试运行此代码时 得到这个错误
Traceback (most recent call last): File "D:\Code\Java\Import\src\CSV\__init__.py", line 19, in <module>
cursor.excute(Query) AttributeError: 'psycopg2._psycopg.cursor' object has no attribute 'excute'
任何解决这个问题的想法。
答案 0 :(得分:3)
我从来没有使用过python,但看起来你在方法调用中有一个拼写错误&#34; excute&#34;。
答案 1 :(得分:1)
回溯是关于代码中出错的地方的信息,特别是第19行。有问题的陈述是cursor.excute(Query)
,明显的错误是你应该调用execute()
函数,这是一个简单的错字因此。
您的代码还有一些问题:
INSERT
语句有一个可选的RETURNING
子句,而不是RETURNED
。tab
字符或分号';'甚至别的什么。使用CSV的方式要求分隔符是逗号','因为这是PG在INSERT
语句中所期望的。quote_string()
函数解决嵌入式引号,该函数将双引号('')嵌入引号(并执行其他有用的操作)像阻止SQL注入的东西。)您的代码的查询行应该看起来像这样:
Query="INSERT INTO product_template (name) VALUES (quote_string("+str(row)+")) RETURNING id"