Python SQLite3帮助,将变量保存到数据库中

Python SQLite3帮助,将变量保存到数据库中,python,sql,python-3.x,sqlite,Python,Sql,Python 3.x,Sqlite,我有两件事需要帮助: 1我不确定如何使用sqlite3库检查python中是否存在表 2我不确定如何将程序中的变量保存到数据库中。在创建数据库之前,我希望能够检查UserDetails是否存在 我一直在阅读,每个人做的事情都不一样 下面是我的代码中负责保存变量的部分: connection = sqlite3.connect("UserDetails.db") crsr = connection.cursor() #create table sql_comm

我有两件事需要帮助:


1我不确定如何使用sqlite3库检查python中是否存在表

2我不确定如何将程序中的变量保存到数据库中。在创建数据库之前,我希望能够检查UserDetails是否存在

我一直在阅读,每个人做的事情都不一样

下面是我的代码中负责保存变量的部分:

    connection = sqlite3.connect("UserDetails.db") 
    crsr = connection.cursor() 

    #create table
    sql_command = table_creator
    crsr.execute(sql_command)

    #insert values into table
    data_to_insert = (username, first_name, surname, age, user_salt, password_hash, date_today)
    sql_command = """INSERT INTO UserDetails VALUES ((?, ?, ?, ?, ?, ?, ?), data_to_insert);"""
    crsr.execute(sql_command)

    connection.commit() #save changes
    connection.close()  #terminate connection
如果您想查看表_creator,它看起来如下所示:

table_creator='CREATE table`UserDetails` `用户名'VARCHAR8不为空, `Firstname`VARCHAR10不为空, `姓'VARCHAR20非空, `Age`INT2不为空, `Salt`VARCHAR10不为空, `Hash`VARCHAR64不为空, `日期`日期不为空, 主键`UserName` ;'

我将感谢您的支持和反馈。 我还在学习编码,我的CompSci老师并没有专门教我们Python,所以我知道的是自学的

哦,这是我收到的错误消息:

Traceback (most recent call)
  File "c:/Users/Arslan/Project A2/login.py", line 99, in <module>
    save_details()
  File "c:/Users/Arslan/Project A2/login.py", line 93, in save_details
    crsr.execute(sql_command)
sqlite3.OperationalError: no such column: data_to_insert


1我不确定如何使用sqlite3库检查python中是否存在表

使用:

2我不确定如何将程序中的变量保存到数据库中

可以使用以下语法为insert传递变量:

 data_to_insert = (username, first_name, surname, age, user_salt, password_hash, date_today)
sql_command = '''INSERT INTO UserDetails VALUES (?, ?, ?, ?, ?, ?, ?)''';
crsr.execute(sql_command, data_to_insert )
如何检查表是否存在:

第一种方式: 使用此查询:

SELECT name FROM sqlite_master WHERE type='table' AND name='{table_name}';
用表修改{table_name}以进行检查 有两种情况:

。如果光标等于0==>则该表不存在 否则,该表存在

第二种方式: 使用:

例如:

第三种方式: 使用此查询:

select 1 from table
如果表存在,它将为表的每一行返回常量1,如果不存在,则返回nothing

还有很多其他的方法,但我列出了我认为最好的方法。 如何将程序中的变量保存到数据库:

要将数据插入sqlite3,可以使用:

cursor.execute("insert into UserDetails values (?, ?, ?, ?, ?, ?, ?)", (username, firstname, surname, age, salt, hash, date))
不要使用SQL注入:

别忘了:

conn.commit()
或者,您可以将连接用作上下文管理器:

with conn:
   # then cursor.execute..

哇,谢谢你的迷你课。我会试着通读一遍,弄清楚到底发生了什么。大家好,我的select查询需要一点帮助。username\u finder='从username=?,username\u input'的UserDetails中选择Salt,散列,'看起来不像我的查询。我希望它在用户名与用户名匹配时选择所有Salt和Hash是的,这很好,使用:sql\u query=select Salt,Hash FROM UserDetails WHERE username=?然后cursor.executesql\u查询、username\u输入并查看结果:username\u finder=cursor.fetchall,然后迭代查看结果,如username\u finder:等中的行
cursor.execute("insert into UserDetails values ('{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}')".format(username, firstname, surname, age, salt, hash, date))
conn.commit()
with conn:
   # then cursor.execute..