gpt4 book ai didi

python - SQLite3 选择数据(Python 中)

转载 作者:行者123 更新时间:2023-12-01 05:48:56 24 4
gpt4 key购买 nike

我正在学习一些Python编程并利用SQlite3我一直遇到同样的问题,但我不知道出了什么问题。

我的 table 设置

def user_table():
data = lite.connect(database)
dat = data.cursor()

with data:
dat.executescript("""CREATE TABLE IF NOT EXISTS Users(Id INTEGER PRIMARY KEY AUTOINCREMENT,
'Username' UNIQUE,
'Password',
'Email',
'UserCharacters_Id' INTEGER
)""");

现在我的代码选择用户名(用户名 123 存在并且表格似乎正确(使用 SQLite studio 检查)

database = 'test.db'
data = lite.connect(database)
dat = data.cursor()
with data:
dat.execute("SELECT * FROM Users WHERE 'Username'='123'")
user = dat.fetchone()
print user

我尝试了很多不同的方法,但它一直返回“无”。python部分似乎工作正常,只是SQL的选择部分出错(用打印检查)

请帮帮我

最佳答案

在 SQL 中,单引号用于字符串,而表/列名称则用双引号引起来。(SQLite 支持后者单引号,以便在某些地方与 MySQL 兼容。)

您的查询将字符串 Username 与字符串 123 进行比较,对于每条记录,此比较都会失败。

使用这个:

dat.execute('SELECT * FROM Users WHERE "Username" = \'123\'')

但是为了防止字符串格式化问题和SQL注入(inject)攻击,你应该使用参数:

username = "123"
dat.execute('SELECT * FROM Users WHERE "Username" = ?', (username,))

关于python - SQLite3 选择数据(Python 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com