2016-09-16 1 views
1

Итак, после того, как мои исследования в stackoverflow не привели меня дальше, вот мой код (я не могу отправить точный код, потому что это проблема I есть на работе) и проблемы:mysql.connector не вставляет с помощью команды python, но вручную работает запрос

import mysql.connector 
.  
. 
. 
cnx = mysql.connector.connect(user, password, host, database) 
cursor = cnx.cursor() 

for-loop: 
    if condition: 
      cursor.execute("INSERT INTO table (the_columns) VALUES (%s)", (my_values)) 
      cnx.commit() 

Я попытался вставить вручную уже и она работала, но как-то мой питон код не будет делать вставку.

Руководство вставки:

INSERT INTO table (column1,...,column7) VALUES (string1,....,string6, now())  

Я не сообщение об ошибке, я могу смотреть только в базу данных и посмотреть, что новые valiues не существует. Кто-нибудь еще сталкивался с этой проблемой? Может ли кто-нибудь предположить, что может быть проблемой?

+0

Проблема была решена, там была проблема, потому что предыдущий Дев два экземпляра с тем же именем, и это не было Msql ошибки на всех. – dima

ответ

1

Может быть, потому что вам не нужно помещать переменную между «(»)? Вы пытались поместить значение непосредственно в sql, а вместо переменной, содержащей его? Что вы подразумеваете под «вручную»?

Во всяком случае, вы должны поместить все переменные в массиве, прежде чем передать этот массив в качестве второго аргумента:

query = (
    "INSERT INTO employees (emp_no, first_name, last_name, hire_date) VALUES (%s, %s, %s, %s)" 
) 
data = (2, 'Jane', 'Doe', datetime.date(2012, 3, 23)) 
cursor.execute(insert_stmt, data) 

EDIT: Я только что проверил, вот главный Exemple если вы Google ваши проблемы ... Подожди, ты искал это немного? Это лучшее, что нужно, чтобы узнать чувака: сначала попробуйте просить о помощи.

+0

Да, я пробовал и имел ввиду это вручную. Никакие скобки не проблема, она работала до этого с таким же выравниванием. И я попытался удалить их, что вызвало ошибку синтаксиса. – dima

+0

ОК, попробуйте поместить вашу переменную в массив данных, например, пример (Edited sorry>.>) – xoxel

+0

Я пробовал это уже, и я искал Google в течение одного часа, и он тоже не работал. зачем еще я спрашиваю о stackoverflow? – dima

0

Попробуйте превратить переменные формата в кортеж. Если это не работает. Попробуйте создать запрос как переменную отдельно и распечатать ее и запустить в своей консоли sql напрямую. Вы можете получить более значимые ошибки.

cnx = mysql.connector.connect(user, password, host, database) 
cursor = cnx.cursor() 

for-loop: 
    if condition: 
     cursor.execute("INSERT INTO table (the_columns) VALUES (%s)", (my_values,)) 
     cnx.commit() 

ИЛИ

cnx = mysql.connector.connect(user, password, host, database) 
cursor = cnx.cursor() 

for-loop: 
    if condition: 
     sql = "INSERT INTO table ({}) VALUES ({})".format(the_columns,my_values) 
     print(sql) 
     cursor.execute(sql) 
     cnx.commit() 
Смежные вопросы