Python ValueError使用支持的格式字符';d';使用psycopg2
我有这样的代码:Python ValueError使用支持的格式字符';d';使用psycopg2,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,我有这样的代码: print "company_id = %d" % company_id ... db.cursor.execute("insert into person (company_id, first, last, type) values (%d, '%s', '%s', %d);", (company_id, name[0], name[1], type)) 我得到以下输出: company_id = 1 Traceback (most recent call last): .
print "company_id = %d" % company_id
...
db.cursor.execute("insert into person (company_id, first, last, type) values (%d, '%s', '%s', %d);", (company_id, name[0], name[1], type))
我得到以下输出:
company_id = 1
Traceback (most recent call last):
...
File "./GetPeople.py", line 125, in insertPerson
db.cursor.execute("insert into person (company_id, first, last, type) values (%d, '%s', '%s', %d);",
为什么它可以打印出第一行,但它为
db.cursor.execute()
调用提供了一个错误?围绕%s占位符的单引号不正确,并且没有使用%d。改变
到
从:
问:我不能将整数或浮点参数传递给我的查询:它表示
数字是必需的,但它是一个数字
答:在查询字符串中,即使在传递数字时,也必须始终使用%s占位符。所有Python对象都由中的Psycopg转换
它们的SQL表示形式,因此它们作为字符串传递给查询。
请参见向SQL查询传递参数
将%d
替换为%s
db.cursor.execute("insert into person (company_id, first, last, type) values (%d, '%s', '%s', %d);", (company_id, name[0], name[1], type))
db.cursor.execute("insert into person (company_id, first, last, type) values (%s, %s, %s, %s);", (company_id, name[0], name[1], type))