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..