2016-09-16 17 views
1

所以在我对stackoverflow的研究没有给我任何进一步的这里是我的代码(我不能发布确切的代码,因为这是一个问题我在工作中)和问题: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() 

我试图手动插入已经和它的工作,但不知何故,我的Python代码不会做插入。

的手动插入:

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) 

编辑:我刚才检查,这就是主为例,如果你谷歌你的问题...等你有没有搜索这一点?学习伙计是最好的等待:在寻求帮助之前自己搜索。

+0

是的,我试过并通过手动的意思。不是没有问题,它以前的工作完全一样。我试图删除它们,它引发了一个语法错误。 – dima

+0

好的,试着把你的变量放在像例子这样的数据数组中(编辑抱歉>。>) – xoxel

+0

我已经试过了,我搜索了一个小时,但它也没有工作。为什么我会问在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() 

OR

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() 
相关问题