【发布时间】:2020-02-01 17:15:11
【问题描述】:
我收到以下错误,尽管 SQL 语法似乎正确。请帮忙。
def create_table(self, **kwargs):
query = "CREATE TABLE IF NOT EXISTS {} ("
comma = r', '
for key, value in kwargs.items():
if key != 'table_name':
query = query + key + ' ' + value + comma
query = query.format(kwargs['table_name']).rstrip(' ,') + ")"
print(query)
return self.cursor.execute(query)
def insert_values(self, *args):
query = r"INSERT INTO {} VALUES ("
comma = r','
for arg in args:
if arg != args[0]:
if type(arg) == str:
query = query + "'" + arg + "'" + comma
else:
query = query + str(arg) + comma
query = query.format(args[0]).rstrip(" ,") + ")"
print(query)
return self.cursor.execute(query)
db.create_table(table_name='store', item='TEXT', quantity='INTEGER', price='REAL')
db.insert_values('store', 'wine glass', 8, 10.5)
输出
# CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)
# INSERT INTO store VALUES ('wine glass',8,10.5)
sqlite3.OperationalError: 表存储有 1 列但有 3 个值 提供
【问题讨论】:
-
一定要
commit任何动作或设置autocommit=True。 -
这是完整的代码吗?错误信息相当清楚。表
store是否可能已经存在,并且只有一列?然后第一条语句CREATE TABLE IF NOT EXISTS将运行而不会出错,因为表已经存在,所以什么也不做。