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,,但为了清楚起见,我不会那样做)。