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