我使用Python和psycopg2来连接postgres。
当我插入一行。。。
sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES ("
sql_string += hundred_name + ", '" + hundred_slug + "', " + status + ");"
cursor.execute(sql_string)
。。。如何获取刚刚插入的行的ID?正在尝试:
hundred = cursor.fetchall()
使用RETURNING id
时返回错误:
sql_string = "INSERT INTO domes_hundred (name,name_slug,status) VALUES ("
sql_string += hundred_name + ", '" + hundred_slug + "', " + status + ") RETURNING id;"
hundred = cursor.execute(sql_string)
只需返回None
。
UPDATE:还有currval
(即使在postgres中直接使用这个命令):
sql_string = "SELECT currval(pg_get_serial_sequence('hundred', 'id'));"
hundred_id = cursor.execute(sql_string)
有人能建议吗?
谢谢!
请不要手动生成包含值的SQL字符串。你可以(也应该!)单独传递值,这样就不需要转义和SQL注入:
有关详细信息,请参阅psycopg文档:http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries
考虑一个返回子句http://www.postgresql.org/docs/8.3/static/sql-insert.html
我来到这里是因为我遇到了类似的问题,但是我们使用的是Postgres XC,它还不支持return ID子句。在这种情况下,您可以使用:
以防对任何人都有用!
相关问题 更多 >
编程相关推荐