entrym='entry'
entrym=entrym+ str(idx)
cursor.execute("INSERT INTO im_entry.test ("+entrym+") VALUES ('"+p+"');")
我正在使用这样的查询,其中entry1
,entry2
等是我的数据库表。程序没有显示任何错误,但p
值未插入数据库中。这有什么不对?请帮我。
答案 0 :(得分:13)
默认情况下,psycopg2会自动为您启动事务,这意味着您必须告诉它提交。请注意,commit
是connection
的方法,而不是cursor
。
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
目的是您可以在一个事务中将多个语句组合在一起,因此其他查询不会看到半成品更改,但也出于性能原因。
另请注意,您应始终使用占位符,而不是将字符串连接在一起。
E.g:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
否则,您可能会使SQL injection attacks成为可能。