mysql.connector没有' t使用python命令插入,但手动查询有效

时间:2016-09-16 15:18:40

标签: python-2.7 mysql-connector

所以在我对stackoverflow的研究之后并没有给我带来任何进一步的信息,这是我的代码(我无法发布确切的代码,因为这是我在工作中遇到的问题)和问题:

 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())    

我没有错误消息,我只能查看数据库,看到新的价值不存在。 有没有人面对这个问题?任何人都可以建议可能是什么问题?

2 个答案:

答案 0 :(得分: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)
编辑:我刚检查过,如果你谷歌你的问题,这是主要的例子......等等你有没有搜索过这个?这是学习老兄最好的等待:在寻求帮助之前自己搜索。

答案 1 :(得分: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()