Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError使用支持的格式字符';d';使用psycopg2_Python_Postgresql_Psycopg2 - Fatal编程技术网

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))