游标方法执行中的操作错误

Operational Error in Cursor Method Execute

提问人:A A 提问时间:10/31/2023 最后编辑:Ken WhiteA A 更新时间:10/31/2023 访问量:36

问:

我正在尝试在 python 的 sqlite3 中创建一个数据库,但在运行该函数后显示此错误消息:

cursor.execute(sql) sqlite3.OperationalError: near “(”: 语法错误

问题显然出在名为 Execute 的游标的方法中,因为调试部分指示该行中存在操作错误,但原因尚不清楚,因为它是按预期编码的。但是,该表已创建,但此错误显示它阻止了我的程序。问题不在于查询的语法,因为我尝试更改列名和变量类型的位置。

请帮我找到问题。

   import sqlite3

      def table_personal_data():  
         conn = sqlite3.connect('mailroom.db')
         cursor = conn.cursor()
         sql='''CREATE TABLE IF NOT EXISTS DONORS(
             ID PRIMARY KEY (NAME,NAME),
             NAME VARCHAR(40) NOT NULL,
             LASTNAME VARCHAR(40) NOT NULL,
             EMAIL VARCHAR(50) NOT NULL,
             DRIVER_LICENSE VARCHAR(50) NOT NULL)''' 
        cursor.execute(sql)
        conn.commit()
        cursor.close()
        conn.close()

table_personal_data()

我试图更改查询部分中的sqlite3代码,但这不是问题。

python sqlite 游标 执行 operationalerror

评论

0赞 Ken White 10/31/2023
问题不在查询的语法中是的,它是。问题出在 中,这是无效的语法。您应该阅读 CREATE TABLE 的文档。(NAME,NAME)

答:

2赞 Хонгор Чулуунцэцэг 10/31/2023 #1

这是您的查询语法错误,请检查一下

这是正确的语法

    sql = '''CREATE TABLE IF NOT EXISTS DONORS(
     ID PRIMARY KEY,
     NAME VARCHAR(40) NOT NULL,
     LASTNAME VARCHAR(40) NOT NULL,
     EMAIL VARCHAR(50) NOT NULL,
     DRIVER_LICENSE VARCHAR(50) NOT NULL)'''

评论