sqlite3python:不能使用“limit”作为列名

wnrlj8wa  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(276)

有6列,出于某种原因,当我的程序在安装过程中遇到这段代码时,它只会创建一个没有表的空白文件。
通过反复试验,我发现唯一不能创建空白文件的方法是删除限制行。
我有其他运行的代码,只是对于不同的数据库看起来是一样的,而且运行得很好。

try:
            # Connect to Database
            conn = sqlite3.connect('databases/Categories.db')
            cur = conn.cursor()

            # Create Table
            cur.execute("""CREATE TABLE categories (
                priority text,
                name text,
                type text,
                increment text,
                total real,
                limit real)""")

            # Commit and Close
            conn.commit()
            conn.close()
        except sqlite3.OperationalError:
            pass
wwtsj6pe

wwtsj6pe1#

“limit”是一个sql关键字,例如

SELECT foo 
  FROM bar
  LIMIT 10;

如果要在sqlite中使用“limit”作为列名,则需要使用以下方式之一引用它:
'限制'
“限制”
[限制]
限制
例如,你的陈述可以是

cur.execute("""CREATE TABLE categories (
            priority text,
            name text,
            type text,
            increment text,
            total real,
            "limit" real)""")

请注意,它也必须在其他语句中引用,例如

"""INSERT INTO categories ("limit") VALUES (?);"""
ws51t4hk

ws51t4hk2#

我做了更多的测试,并通过将限制行重命名为其他行来修复它。结果,sqlite3不喜欢名为limit的行。

相关问题