我尝试在 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()
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])
在这种情况下,只有一个变量需要替换,但它仍然必须是一个列表,因此它是一个只有一项的列表。