Python\SQLite:表 A 没有名为 X 的列

Bla*_*ack 6 python sqlite

我创建了一个名为 A 的表,需要将数据插入其中。

但是,由于某种原因,SQLite 找不到表中的最后一列。

错误:

OperationalError: table A has no column named Byte 
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

# Create the table
c.execute("DROP TABLE A;");

c.execute("""CREATE TABLE IF NOT EXISTS A 
        (id INTEGER PRIMARY KEY,
        Col1 TEXT,
        Col2 INTEGER,
        Col3 TEXT,
        Col4 TEXT,
        Byte TEXT);""");

# Insert data into A
c.execute("""INSERT INTO A 
                    (Col1, Col2, Col3, Col4, Byte) VALUES (?, ?, ?, ?, ?)""",
                    (Col1, Col2, Col3, Col4, Byte));
Run Code Online (Sandbox Code Playgroud)

注意:值 Col1、...、Col4、Byte 是由我的程序计算的,因此我需要一种动态方法来执行此操作。

另外,表 A 存储在我的磁盘上的哪里?我是否能够使用它进行查询,c.execute("SELECT * FROM A;");而无需CREATE TABLE在创建后重新运行命令A

我每次都会收到相同的 Byte 错误,但我不知道为什么。任何见解/一般提示将不胜感激。

Nor*_*Cat 2

您的代码无法在建议的变体中运行。首先,从查询字符串中删除注释行。这段代码对我来说效果很好:

import sqlite3

con = sqlite3.connect('test.db')

c = con.cursor()
c.execute("DROP TABLE A;")

#computing values
Col1, Col2, Col3, Col4, Byte = ('1234', 2, '5678', 'qwerty', 'bytestr')

c.execute("""CREATE TABLE IF NOT EXISTS A
    (id INTEGER PRIMARY KEY,
    Col1 TEXT,
    Col2 INTEGER,
    Col3 TEXT,
    Col4 TEXT,
    Byte TEXT);""")


# Insert data into A
c.execute("""INSERT INTO A
                (Col1, Col2, Col3, Col4, Byte) VALUES (?, ?, ?, ?, ?)""",
                (Col1, Col2, Col3, Col4, Byte))

c.execute('SELECT * FROM A;')

print c.fetchall() #[(1, u'1234', 2, u'5678', u'qwerty', u'bytestr')]
Run Code Online (Sandbox Code Playgroud)

表“A”存储在文件“test.db”中。在本例中,“test.db”与脚本保留在同一文件夹中。如果加载此文件,并且它将有一个表“A”,您可以立即对表“A”执行查询。在这种情况下,尝试重新创建表将导致错误。