【问题标题】:I was trying to run MySQL query using Python but getting error 1064 (42000):我试图使用 Python 运行 MySQL 查询,但出现错误 1064 (42000):
【发布时间】:2021-11-02 07:06:18
【问题描述】:
import mysql.connector as connection

try:
    mydb = connection.connect(host="localhost", database = 'motogp',user="root", passwd="unlock24708651",use_pure=True)
    # check if the connection is established
    print(mydb.is_connected())

    query = "CREATE TABLE Riders_championship(Rank INT(3), Rider_name CHAR(20), Nation CHAR(12), Team VARCHAR(20), Points INT(3))"

    cursor = mydb.cursor() #create a cursor to execute queries 
    cursor.execute(query)
    print("Table Created!!")
    mydb.close()
except Exception as e:
    mydb.close()
    print(str(e))

错误:

是的

1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'Rank INT(3)、Rider_name CHAR(20)、Nation CHAR(12)、Team VARCHAR(20)、Points INT(' 附近使用正确的语法

【问题讨论】:

    标签: python mysql jupyter-notebook


    【解决方案1】:

    RANK 是 MySQL 中的 reserved keyword,至少在 v8.0.2 及更高版本上是这样。如果你想坚持使用它,那么你必须把它用反引号括起来,比如:

    query = "CREATE TABLE Riders_championship(`Rank` INT(3),Rider_name CHAR(20),Nation CHAR(12),Team VARCHAR(20),Points INT(3))"

    还有你所有未来的代码。所以做一个SELECT 喜欢:

    SELECT Rank FROM Riders_championship;
    

    将返回您现在遇到的相同错误,因此您必须将其编写为:

    SELECT `Rank` FROM Riders_championship;
    

    让它工作。您的所有INSERT、UPDATE、DELETE 查询也是如此。

    这是simple demo to show you。

    我个人不喜欢使用关键字,即使它是否保留,所以如果是我,我可能会将我的列重命名为RANKS。这样它就不会与保留关键字冲突。

    【讨论】:

    • 非常感谢@FaNo_FN 这两个选项都有效!以前我在搜索保留关键字,但找不到“RANK”。 8.0.2版本增加了“RANK”。
    猜你喜欢
    • 2014-11-18
    • 1970-01-01
    • 2020-06-24
    • 2018-01-26
    • 2011-12-06
    • 2018-03-05
    • 1970-01-01
    • 2022-07-22
    • 2021-11-09
    相关资源
    最近更新 更多