【发布时间】:2019-04-25 13:40:14
【问题描述】:
如果我尝试将多个字符值(如“12”)插入到我的数据库中,它将无法正常工作。
错误信息:
Incorrect number of arguments executing prepared Statement
如果我尝试将单个字符值(如“9”)插入到我的数据库中,它会起作用。
我的错误在哪里?
我尝试过的事情: 我在代码的不同位置将变量设置为永久值。
结果是,它只适用于大于 9 的值,如果该值在查询中是静态的。
例如:
query = """insert into Sklaven (Adresse) values(12)"""
result = cursor.execute(query)
如果我做动态它不会工作。
例如。:
query = """insert into Sklaven (Adresse) values(%s)"""
result = cursor.execute(query, Wert)
或者
result = cursor.execute(query, "12")
完整代码:
Import mysql.connector
def insert_Value(Adressen):
try:
connection = mysql.connection.connect(host= '*.*.*.*',
database ='*',
user = '*',
Password ='*')
Cursor = Connection.cursor(prepared=True)
query = """insert into Sklaven (Adresse) values(%s)"""
Wert = Adressen
print ("Value = ", Wert) #showing current value
print ("len = ", len(Wert)) #showing lenght of current value
result = cursor.execute(query, Wert)
print("ok")
connection.commit()
expect mysql.connector.Error as error:
connection.rollback()
print("not ok {}".format(error))
S=8
for x in range(0,7):
S = str(S)
inserr_Value(S)
S=int(S)
S=S+1
壳牌回报:
value = 8
len = 1
ok
value = 9
len = 1
ok
value = 10
len = 2
not ok 1210: Incorrect number of arguments executing prepared Statement
value = 11
len = 2
not ok 1210: Incorrect number of arguments executing prepared Statement
value = 12
len = 2
not ok 1210: Incorrect number of arguments executing prepared Statement
value = 13
len = 2
not ok 1210: Incorrect number of arguments executing prepared Statement
value = 14
len = 2
not ok 1210: Incorrect number of arguments executing prepared Statement
【问题讨论】:
-
insert_tuple在哪里定义?我只看到它在查询中使用,但没有定义。 -
result = cursor.execute(query, "12"):在此处使用实际的元组(根据您的非工作示例代码):result = cursor.execute(query, (12,))。让我们知道它是否以及如何工作(注意:如果 12 应该是一个数字,请去掉引号)。 -
Adresse的列类型是什么?一个整数,一个字符串,还是别的什么? -
要在列表中插入存在的值,您可以使用循环。
for item in list: query_to_insert(item) -
抱歉。当然应该是
result = cursor.execute(query, Wert),而不是result = cursor.execute(query, insert_tuple)。
标签: python mysql-python