Mysql вставка.Не могу использовать значение из нескольких символов - PullRequest
0 голосов
/ 25 апреля 2019

Если я попытаюсь вставить в свою базу данных многозначное значение, например «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

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

1 Ответ

0 голосов
/ 25 апреля 2019

Вы делаете

tuple_result = tuple(Wert)

как раз перед фактическим запросом?

Попробуйте tuple("12") в командной строке Python, и вы увидите, в чем проблема: она выглядит как ('1', '2'). Строки в таких случаях часто рассматриваются как список символов (или кодовые точки Юникода, если хотите) для многих операций.

Вместо этого вы должны создать свой кортеж просто как

tuple_result = (Wert,)

с последующим

result = cursor.execute(query, insert_tuple)

(вы могли бы даже использовать tuple_result = Wert,, но я бы не стал этого делать из соображений ясности).

...