我正在尝试创建一个创建表的方法(如果不存在)。
当我尝试执行此方法时,它返回sqlite3.OperationalError: near "TEXT": syntax error
方法:
def create_table_if_exists(self):
self.conn.execute(
'CREATE TABLE IF NOT EXISTS products(NAME TEXT, URL TEXT, '
'ESHOP1 TEXT, CENA1 TEXT, DOPRAVA1 TEXT, STAV1 TEXT, '
'ESHOP2 TEXT, CENA2 TEXT, DOPRAVA2 TEXT, STAV2 TEXT, '
'ESHOP3 TEXT, CENA3 TEXT, DOPRAVA3 TEXT, STAV3 TEXT, '
'ESHOP4 TEXT, CENA4 TEXT, DOPRAVA4 TEXT, STAV4 TEXT, '
'ESHOP5 TEXT, CENA5 TEXT, DOPRAVA5 TEXT, STAV5 TEXT')
self.conn.commit()
错误:
'CREATE TABLE IF NOT EXISTS products(NAME TEXT, URL TEXT, '
sqlite3.OperationalError: near "TEXT": syntax error
我无法意识到问题出在哪里。你有什么建议吗?
答案 0 :(得分:0)
问题是最后缺少关闭的人。出于某种原因,错误只显示查询的第一行。
对于多行字符串,我建议使用multi-line '''
quotes以便于阅读。加上SQL语句的正确缩进,将来会避免这种语法错误。
def create_table_if_exists(self):
self.conn.execute(conn.execute('''
CREATE TABLE IF NOT EXISTS products(
NAME TEXT,
URL TEXT,
ESHOP1 TEXT, CENA1 TEXT, DOPRAVA1 TEXT, STAV1 TEXT,
ESHOP2 TEXT, CENA2 TEXT, DOPRAVA2 TEXT, STAV2 TEXT,
ESHOP3 TEXT, CENA3 TEXT, DOPRAVA3 TEXT, STAV3 TEXT,
ESHOP4 TEXT, CENA4 TEXT, DOPRAVA4 TEXT, STAV4 TEXT,
ESHOP5 TEXT, CENA5 TEXT, DOPRAVA5 TEXT, STAV5 TEXT
)
''')
self.conn.commit()