c = conn.cursor()
c.executescript("""
CREATE TABLE IF NOT EXISTS dvdlist (
title text,
barcode,
added_date text,
out numeric,
borrower text,
price real
);
CREATE TABLE IF NOT EXISTS userdb (
username text,
password text,
address text,
phone text,
email text,
borrowed integer
);
CREATE TABLE IF NOT EXISTS staffdb (
username text,
password text,
address text,
phone text,
email text,
group integer
);
""")
Traceback说:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "shopdatabase.py", line 52, in __init__
self.__db_init()
File "shopdatabase.py", line 108, in __db_init
""")
sqlite3.OperationalError: near "group": syntax error
我在http://www.sqlite.org/datatype3.html查找了sqlite中的数据类型,我不太清楚发生了什么。请帮忙。
答案 0 :(得分:2)
群组是reserved keywords之一。你不能这样使用它。
正如@MartijnPieters在回答中所述,你可以用引号括起group
来解决问题。
答案 1 :(得分:2)
group
是reserved keyword(它是SQL语言的一部分)。如果要将其用作列名,则需要引用它:
CREATE TABLE IF NOT EXISTS staffdb (
username text,
password text,
address text,
phone text,
email text,
'group' integer
);
您可以使用单引号('group'
),双引号("group"
)或方括号或反引号([group]
和`group`
),但后两种形式是仅支持与不兼容的数据库引擎兼容。
您必须在SQL语句中的任何位置引用该名称:
SELECT 'group' FROM staffdb WHERE username=?
例如。