我在heroku的Postgres数据库中插入数据时感到困惑。在
事情是这样的
我已经创建了到数据库的连接
cursor = conn.cursor()
cursor.execute("INSERT INTO users(username, useremail, userpass) VALUES ('"+_name+"','"+_email+"','"+_password+"')")
执行之后,我通过
print(cursor.statusmessage)
它回来了
INSERT 0 1
但在执行时,数据=
cursor.fetchall()
它给我带来了错误
File "/Users/abc/PycharmProjects/testSkillNetwork/app.py", line 75, in signUp data = cursor.fetchall().
ProgrammingError: no results to fetch
所以,我不明白为什么插入成功时“没有结果”。在
任何帮助都将不胜感激。谢谢。在
您需要发出
SELECT
查询,以便从数据库中检索数据。在这会给你一些结果。在
另外,您应该在完成插入数据后提交事务,否则它将丢失。使用:
^{pr2}$另一个更大的问题是,构造查询的方式容易受到SQL注入的攻击。您应该使用参数化查询,而不是使用字符串连接:
{{2}将用传递给这个cdtuple}的值替换来自cdtuple}的值。这不仅更安全,而且更易于阅读和维护。在
我不确定您使用什么驱动程序连接到数据库,假设您使用的是
psycopg2
,这是最著名的驱动程序之一,您所观察到的是正常行为。从here读取:insert语句除了在失败时产生错误外,不产生任何结果。如果要获取刚刚插入的行,请再次查询数据库:
这会给你一排排。在
除此之外,如果您阅读basic usage和参数化查询部分,在执行查询时从不使用python字符串连接,因为它容易受到SQL injection attacks的攻击。在
相关问题 更多 >
编程相关推荐