psycopg2在插入多个单词、空字符串和空数组时会抱怨:
name = "Meal Rounds"
description = ""
sizes = []
cur.execute(""" INSERT INTO items (name, description, sizes) VALUES (%s, %s, %s)""" % (name, description, sizes))
错误:
^{pr2}$我可以通过转义来避免多字错误:
""" INSERT INTO items (name, description, sizes) VALUES (\"%s\", \"%s\", %s)"""
但是对于有15+列的表,每列都要转义是一件痛苦的事。psycopg2不以更简单的方式处理这个问题吗?但它仍然会对空字符串抛出错误。在
如何更有效地插入多个单词,以及如何插入空字符串和数组?在
下面是psql在我的专栏上打印的内容:
name | character varying(255) |
description | character varying(255) |
sizes | integer[] |
调用execute是用Python字符串替换创建一个字符串,结果证明它是无效的SQL。您应该使用Python DB API提供的参数替换:
https://www.python.org/dev/peps/pep-0249/#id15
要使用参数替换调用execute,需要传递两个参数。第一种是带有依赖于数据库的参数字符串的查询。Psycopg2使用“pyformat”paramstyle,这样查询就可以像写的那样工作了。第二个参数应该是要替换到查询中的变量。数据库驱动程序将处理您需要的所有引用/转义。所以你要执行的命令应该是
相关问题 更多 >
编程相关推荐