【问题标题】:Python and MySQL : Error with simple INSERTPython 和 MySQL:简单 INSERT 出错
【发布时间】:2018-04-08 07:44:09
【问题描述】:
import mysql.connector
conn = mysql.connector.connect(host="localhost",user="root",password="password", database="database_name")
cursor = conn.cursor()
a = "abcd"
cursor.execute("INSERT INTO table_jeux (lien_fiche) VALUES (?)", (a))

这是我执行脚本时遇到的错误:

ProgrammingError: 1064 (42000): Syntax error near to '?)' at line 1

谢谢你的帮助,我真的不明白为什么。

【问题讨论】:

    标签: python mysql sql-insert mysql-python


    【解决方案1】:

    您可能想要的是将变量 a 插入您的 SQL 代码,但它不起作用 - 解析器得到一个“?”你希望它在哪里有“abcd”

    你可以试试这个:

    cursor.execute("INSERT INTO table_jeux (lien_fiche) VALUES ({})".format(a))
    

    或者(有点python2的方式):

    cursor.execute("INSERT INTO table_jeux (lien_fiche) VALUES (%s)", (a,))
    

    如此处所述: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html

    【讨论】:

    • 第二个工作正常,我试了一下,但没有逗号。谢谢。
    【解决方案2】:

    尝试使用 f 个字符串,

    它应该看起来像这样:

    cursor.execute(f'INSERT INTO student (student_name, student_email, courseid) VALUES ("{student_name}","{student_email}",{course_id})') 
    

    其中 student_name、student_email 和 course_id 都是变量。

    在你的情况下:

    cursor.execute(f'INSERT INTO table_jeux (lien_fiche) VALUES ("{a}")')
    

    【讨论】:

    • 也许您使用的是 Python 2?
    • 是的,我正在使用 python 2
    • 啊,这就是问题所在。应该警告您 f 字符串仅在 Python 3 中可用。我的错,我不会尝试找到其他解决方案,因为 Ergaro 已经回答了。
    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多