如果我尝试在我的数据库中插入多个字符值,如“12”,它将无法正常工作。 Error_message: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
你在做什么
tuple_result = tuple(Wert)
在实际查询之前,有机会吗?
在Python命令行上尝试tuple("12")
,然后你会看到问题所在:它出现在('1', '2')
。在这种情况下,字符串通常被视为许多操作的字符列表(或unicode代码点,如果您愿意)。
相反,你应该简单地构造你的元组
tuple_result = (Wert,)
其次是
result = cursor.execute(query, insert_tuple)
(你甚至可以使用tuple_result = Wert,
,但为了清楚起见,我不会这样做)。