如何解决 python 错误 "not all arguments converted while string formatting"
how to resolve python error "not all arguments converted while string formatting"
当我执行下面的程序时
import MySQLdb
cn = MySQLdb.connect(host="localhost", user="root", passwd="mysqlroot",
db="sv_data")
cursor = cn.cursor()
cursor.execute("select addressline1, zipcode from sv_address where zipcode = '10011'")
for (addressline1, zipcode) in cursor:
print(addressline1, zipcode)
cursor.close()
cn.close()
它工作正常。但是,当我尝试在查询中添加参数时,如下所示
import MySQLdb
cn = MySQLdb.connect(host="localhost", user="root", passwd="****",
db="sv_data")
cursor = cn.cursor()
a="10011"
cursor.execute("select addressline1, zipcode from sv_address where zipcode =
%s", (a))
for (addressline1, zipcode) in cursor:
print(addressline1, zipcode)
cursor.close()
cn.close()
出现错误 ProgrammingError:在字符串格式化期间并非所有参数都已转换
你能告诉我如何解决这个问题吗?我尝试了各种选择。邮政编码是 mysqldb 中的 varchar 字段
你没有传递论点。你宁愿给它一个字符串。
试试这个。
cursor.execute("select addressline1, zipcode from sv_address where zipcode = %s" % a )
最好的办法是将你的论点和 sql_query
分开
_sql = "select addressline1, zipcode from sv_address where zipcode = {0}"
cursor.execute(_sql.format(a))
我认为问题在于 cursor
正在读取 (a)
只是一个字符串,并在其中看到多个未转换的值 (1, 0, 0, 1, 1
)。所以如果你像这样添加一个逗号:
cursor.execute("select addressline1, zipcode from sv_address where zipcode = %s", (a,))
我相信它会正常工作。
例如,看看这个函数和结果:
In [28]: def t(arg):
...: print(type(arg))
...:
In [29]: t(('a'))
<class 'str'>
参数不是作为元组读取的,而是作为字符串读取的。
当我执行下面的程序时
import MySQLdb
cn = MySQLdb.connect(host="localhost", user="root", passwd="mysqlroot",
db="sv_data")
cursor = cn.cursor()
cursor.execute("select addressline1, zipcode from sv_address where zipcode = '10011'")
for (addressline1, zipcode) in cursor:
print(addressline1, zipcode)
cursor.close()
cn.close()
它工作正常。但是,当我尝试在查询中添加参数时,如下所示
import MySQLdb
cn = MySQLdb.connect(host="localhost", user="root", passwd="****",
db="sv_data")
cursor = cn.cursor()
a="10011"
cursor.execute("select addressline1, zipcode from sv_address where zipcode =
%s", (a))
for (addressline1, zipcode) in cursor:
print(addressline1, zipcode)
cursor.close()
cn.close()
出现错误 ProgrammingError:在字符串格式化期间并非所有参数都已转换
你能告诉我如何解决这个问题吗?我尝试了各种选择。邮政编码是 mysqldb 中的 varchar 字段
你没有传递论点。你宁愿给它一个字符串。
试试这个。
cursor.execute("select addressline1, zipcode from sv_address where zipcode = %s" % a )
最好的办法是将你的论点和 sql_query
_sql = "select addressline1, zipcode from sv_address where zipcode = {0}"
cursor.execute(_sql.format(a))
我认为问题在于 cursor
正在读取 (a)
只是一个字符串,并在其中看到多个未转换的值 (1, 0, 0, 1, 1
)。所以如果你像这样添加一个逗号:
cursor.execute("select addressline1, zipcode from sv_address where zipcode = %s", (a,))
我相信它会正常工作。
例如,看看这个函数和结果:
In [28]: def t(arg):
...: print(type(arg))
...:
In [29]: t(('a'))
<class 'str'>
参数不是作为元组读取的,而是作为字符串读取的。