You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中SQLite3库.execute方法执行建表SQL报语法错误求助

错误原因
  • 列名包含SQL语法不允许直接使用的特殊字符/空格:AP RANK带空格、Y/A和AY/A带斜杠,这类标识符必须用反引号或双引号包裹才能作为合法的列名,你遇到的near "/": syntax error就是未包裹斜杠类列名导致的。
  • 字段约束写错:SCHOOL TEXT NON NULL中的NON是错误写法,正确的非空约束关键字是NOT。
  • 外键定义逻辑错误:你设置的FOREIGN KEY(NAME) REFERENCES qb(NAME)是引用自身表的NAME字段,但NAME字段既不是主键也没有设置唯一约束,不符合SQLite外键规则,这个多余的外键定义建议删除。
  • 补充:原代码里print(qb.head)未加括号,打印的是方法对象而非前几行数据,建议改为print(qb.head())。
修正后的完整代码
import numpy as np
import pandas as pd
import sqlite3 as sqlite3


qb = pd.read_excel('d:/2021_College_QB_Week_3.xlsx', sheet_name = '2021_College_QB_Week_3', 
header = 0)

print(qb.head())
db_conn = sqlite3.connect("d:/2021_College_Stats.db")
c = db_conn.cursor()
c.execute(
    """
    CREATE TABLE qb(
    `AP RANK` INTEGER,
    NAME TEXT NOT NULL,
    GAME INTEGER,
    CMP INTEGER,
    ATT INTEGER,
    PCT FLOAT, 
    YDS INTEGER,
    `Y/A` FLOAT,
    `AY/A` FLOAT,
    TD INTEGER,
    INT INTEGER,
    RATE FLOAT,
    SCHOOL TEXT NOT NULL,
    YEAR INTEGER,
    PRIMARY KEY(SCHOOL)
    );
    """
    )
# 如需直接把读取的Excel数据写入表,可添加下方这行代码
qb.to_sql("qb", db_conn, if_exists="append", index=False)
# 操作完成后提交更改并关闭连接
db_conn.commit()
db_conn.close()

内容的提问来源于stack exchange,提问作者Tim O'Rourke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:36:05