gpt4 book ai didi

python - 插入sqlite db-python

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:10 24 4
gpt4 key购买 nike

我正在尝试在我最新的 python 程序中使用 SQLite 数据库。我正在尝试使用 insert 向我的数据库中插入一个新行。数据库的列设置为:

0|pw|TEXT|0||0
1|Name|TEXT|0||0
2|dataBaseID|INT|0||0
3|email|TEXT|0||0

我的 python 代码是:

this = "INSERT INTO users (pw, name, dataBaseID, email)"
this += " VALUES ("+passWord+", "+UserName+", "+"1"+", "+email+")"
print(this)
cur.execute(this)
dbCon.commit()

错误是:

Traceback (most recent call last):
File "/usr/lib/python3.2/multiprocessing/process.py", line 267, in _bootstrap
self.run()
File "/usr/lib/python3.2/multiprocessing/process.py", line 116, in run
self._target(*self._args, **self._kwargs)
File "serverBackend.py", line 85, in main
add(msg,cur,databaseConnection,connect)
File "serverBackend.py", line 20, in add
cur.execute(this)
sqlite3.OperationalError: no such column: Chips1994

为什么会抛出错误并指示 Im 试图访问不存在的列?提前致谢。

最佳答案

您必须用 " 或类似的东西包围您的值。此外,您目前正在做的是非常糟糕的代码,可能会导致一些严重的 sql 注入(inject)问题。

作为stated in the official python-sqlite 3 documentation , 你应该使用占位符。

将您当前的代码替换为

query = "INSERT INTO users (pw, name, dataBaseID, email) VALUES (?, ?, ?, ?)"
cur.execute(query, (passWord, UserName, 1, email))
cur.commit()

使用占位符 ?,sql wrapper 将注意用必要的字符包围值,例如 "

额外提示:您似乎想以明文形式存储密码。您应该避免这种情况并使用一些哈希方法,例如 PBKDF2。

关于python - 插入sqlite db-python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24663389/

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