"没有这样的专栏"检查表格列时

时间:2017-03-08 20:42:06

标签: python sqlite

我正在创建一个表格来向数据库添加数据,但我不知道在哪里为“电子邮件”创建列。我的最终目的是能够输入用户名(电子邮件)和密码,并将其保存到数据库中,但我不知道如何做到这一点。这是我目前的代码:

import sqlite3

def save_to_database(my_stack, filename = 'stack_database.db'):

    conn = sqlite3.connect(filename)
    c = conn.cursor()

    for row in c.execute('SELECT email FROM sqlite_master WHERE type="table"'):
        if row != None:
            c.execute("DROP TABLE emails")

    c.execute("CREATE TABLE emails(email text,login_date text)")
    ...

1 个答案:

答案 0 :(得分:1)

sqlite_master表没有名为email的列;整个表结构包含在sql列的文本中。

您可以检查表名本身(但请注意,如果找不到行,则不返回任何行,甚至不返回空行,因此尝试使用for处理此行没有意义环):

c.execute("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'emails'")
if not c.fetchall():
    c.execute('DROP TABLE emails')

但是,有一种更简单的方法可以确保删除表,无论其先前的状态如何:

c.execute('DROP TABLE IF EXISTS emails')