在 python postgres SQL 语句中使用变量

问题描述 投票:0回答:1

我尝试在 SQL 语句中使用变量,但出现错误:

TypeError:函数最多接受 2 个参数(给定 3 个)

说实话,我不是大师级程序员,对 postgres 也没什么经验,所以这可能是一个相当简单的解决方案。

此外,如果有另一种方法可以做到这一点,那将会非常有帮助。

感谢您的帮助

 conn = psycopg2.connect("dbname=postgres user=postgres password=postgres")

 cur = conn.cursor()

 cur.execute("SELECT password FROM user WHERE email = ",inputed_email,";")
 print(cur.fetchone())
        
 cur.close()
 conn.close()

inputed_email 是一个与用户表中的记录之一匹配的变量

python postgresql variables
1个回答
0
投票
cur.execute("SELECT password FROM user WHERE email = ",inputed_email,";")

这行代码是错误的,原因有两个。

首先,正如错误所述,

execute()
函数最多接受两个参数,但您传递了三个。您不能像使用
print()
时那样在末尾添加额外的内容。

其次,如果您想执行包含变量的 SQL 语句,有另一种方法可以使用 placeholders

如果要在语句中使用变量,请使用

%s
代替:

SELECT password FROM user WHERE email = %s

然后

execute()
的第二个参数是要替换到查询中的所有变量的列表(或元组):

cur.execute("SELECT password FROM user WHERE email = %s", [inputed_email])

在这种情况下,只有一个变量需要替换,但它仍然必须是一个列表,因此它是一个只有一项的列表。

© www.soinside.com 2019 - 2024. All rights reserved.