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

mysql.connector doesn' t insert with python command, but manually the query works

所以在我对 Whosebug 的研究没有给我带来任何进一步的帮助之后,我的代码(我不能 post 确切的代码,因为这是我在工作中遇到的问题)和问题:

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

我没有错误消息,我只能查看数据库,发现新值不存在。 还有其他人遇到过这个问题吗?谁能建议可能是什么问题?

可能是因为您不必将变量放在 "(" ")" 之间? 您是否尝试将值直接放在 sql 中,而不是包含它的变量? "manually" 是什么意思?

无论如何,在将此数组作为第二个参数传递之前,您应该将所有变量放在一个数组中:

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)

编辑:我刚刚检查过,如果您 google 您的问题,那就是主要的例子……等等,您搜索过这个吗?这是最好的等待学习伙计:在寻求帮助之前自己搜索。

尝试将格式变量转换为元组。如果这不起作用。尝试将查询单独创建为变量并将其打印出来并直接在 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()