Mysql插入。不能使用多个字符值
Mysql insert. Can´t use multiple character value
如果我尝试将多字符值(如“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
Shell Returns:
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,
,但为了清楚起见,我不会那样做)。
如果我尝试将多字符值(如“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
Shell Returns:
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,
,但为了清楚起见,我不会那样做)。