gpt4 book ai didi

python - Heroku 数据库 : Insert operation

转载 作者:行者123 更新时间:2023-11-29 12:08:44 25 4
gpt4 key购买 nike

我在向 heroku 中的 Postgres 数据库插入数据时感到困惑。

事情是这样的

我已经创建了到数据库的连接,然后

cursor = conn.cursor()
cursor.execute("INSERT INTO users(username, useremail, userpass) VALUES ('"+_name+"','"+_email+"','"+_password+"')")

执行后,通过

查看sql状态

打印(cursor.statusmessage)

它返回,

INSERT 0 1

但是在执行时,data =

cursor.fetchall()

它会抛出错误

File "/Users/abc/PycharmProjects/testSkillNetwork/app.py", line 75, in signUp data = cursor.fetchall().

ProgrammingError: no results to fetch

所以,我无法理解为什么插入成功后“没有结果”。

任何帮助将不胜感激。谢谢。

最佳答案

您需要发出 SELECT 查询才能从数据库中检索数据。

cursor.execute("SELECT * FROM users")
cursor.fetchall()

这应该会给你一些结果。

此外,您应该在完成插入数据后提交事务,否则会丢失。使用:

conn.commit()

另一个更大的问题是您构建查询的方式容易受到 SQL 注入(inject)的攻击。与其使用字符串连接,不如使用参数化查询:

cursor.execute("INSERT INTO users(username, useremail, userpass) VALUES (%s, %s, %s)", (_name,_email,_password))

使用这种样式,数据库适配器会将占位符 (%s) 替换为传递给 cursor.execute() 的参数元组中的值。这不仅更安全,而且更易于阅读和维护。

关于python - Heroku 数据库 : Insert operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47951927/

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