我正在尝试使用python中的项目列表在SQLite数据库中创建表,但是在创建表时却给了我操作上的错误。
我正在使用python for循环将此列表项用作列标题。直到列表项“ QT”循环运行良好,然后循环中断并给我错误。
col_names = [
"ABPs",
"ABPd",
"ABPm",
"ARTs",
"ARTd",
"ARTm",
"AoS",
"AoD",
"AoM",
"UAPs",
"UAPd",
"UAPm",
"P1s",
"P1d",
"P1m",
"NBPs",
"NBPd",
"NBPm",
"P_1d",
"P_1m",
"PVC",
"QT",
"QT-HR",
"QTc",
"ST-I",
"ST-II",
"ST-III",
"ST-aVR",
"ST-aVF",
"ST-aVL",
"ST-MCL",
"ST-V1",
"ST-V2",
"dQTc",
"ST-V3",
"ST-V4",
"ST-V5",
"ST-V6",
]
cur.execute("""CREATE TABLE CICU2 (datetime DATETIME)""")
for colname in col_names:
cur.execute("""ALTER TABLE CICU2 ADD COLUMN """ + colname + """ TEXT""")
错误:near "-": syntax error
。
答案 0 :(得分:2)
-
;您正在要求SQLite从另一列中减去一个列名称。如果要在列名称中使用任何非标准字符,则必须使用proper quoting。
引用列名的标准方法是使用双引号。列名称中任何现有的双引号都可以替换为 doubled 双引号:
cur.execute('ALTER TABLE CICU2 ADD COLUMN "{}" TEXT'.format(colname.replace('"', '""'))
我使用format string将列名插入查询中,这对于人类来说更容易阅读。 {}
部分由str.format()
方法的第一个参数的值替换。