首页 > 解决方案 > MySQLdb._exceptions.ProgrammingError: (1064, "您的 SQL 语法有错误;请查看与您的 MySQL 服务器相对应的手册

问题描述

我正在尝试使用我的 Flask 应用程序将数据插入 MySQL 表,如下所示;

#Create MySQL connection and write data into the table user_data from the POST form
    sql_cursor = mysql.connection.cursor()
    
    sql_cursor.execute("""INSERT INTO user_data (make,model,trim,fuel_type,transmission,condition,body_type,region,descriptn,eng_capacity,year,mileage, estm_value)
        VALUES (new_info['make'],new_info['model'],new_info['trim'],new_info['fuel_type'],new_info['transmission'],new_info['condition'],
        add_bodytype['body_type'],add_region['region'],new_data['description'],new_data['eng_capacity'],year,new_data['mileage'], estm_value);""")
        
    mysql.connection.commit()
    sql_cursor.close()

这也不起作用:

    sql_cursor = mysql.connection.cursor()
    
    sql_cursor.execute("INSERT INTO user_data (make,model,trim,fuel_type,transmission,condition,body_type,region,descriptn,eng_capacity,year,mileage, estm_value) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", (new_info['make'],new_info['model'],new_info['trim'],new_info['fuel_type'],new_info['transmission'],new_info['condition'],add_bodytype['body_type'],add_region['region'],new_data['description'],new_data['eng_capacity'],year,new_data['mileage'], estm_value))
        
    mysql.connection.commit()
    sql_cursor.close() 

我收到以下错误:

I get the below error:

MySQLdb._exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition,body_type,region,descriptn,eng_capacity,year,mileage, estm_value)\n ' at line 1")

有人请帮助我。

标签: pythonmysql

解决方案


主页解释了如何使用占位符https://dev.mysql.com/doc/connector-python/en/connector-python-example-cursor-transaction.html

如果你的变量都是有效的。

这应该工作

sql_cursor.execute("""INSERT INTO user_data (make,model,trim,fuel_type,transmission,condition,body_type,region,descriptn,eng_capacity,year,mileage, estm_value)"""\
                """ VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s, %s);""",(new_info['make'],new_info['model'],new_info['trim'],new_info['fuel_type'],new_info['transmission'],new_info['condition'],
    add_bodytype['body_type'],add_region['region'],new_data['description'],new_data['eng_capacity'],year,new_data['mileage'], estm_valu)))
    
mysql.connection.commit()
sql_cursor.close()

推荐阅读