Python中如何将input输入值插入PostgreSQL数据库表?
实现方法
注意:禁止直接将用户输入拼接进SQL字符串,会引发SQL注入风险,必须使用psycopg2提供的参数化查询能力实现
具体实现步骤如下:
- 调用
input()函数获取用户输入的内容 - 在SQL语句中使用
%s作为待插入值的占位符 - 将用户输入值封装为元组,作为
cur.execute()的第二个参数传入
修改后的完整代码如下:
import psycopg2 conn = psycopg2.connect( host="localhost", database="Twitterzuil", user="postgres", password="" ) cur = conn.cursor() # 获取用户输入 user_input_name = input("请输入要插入的name值:") # 用参数化查询执行插入,第二个参数是和占位符顺序对应的参数元组 cur.execute("INSERT INTO Bericht2 (name) VALUES (%s)", (user_input_name,)) conn.commit() # 用完后关闭连接和游标 cur.close() conn.close()
额外说明:
- 参数元组最后必须加逗号,哪怕只有一个参数,否则Python会识别为单个变量而非元组,导致执行报错
- psycopg2的参数化查询会自动处理输入内容的转义,避免SQL注入问题,是官方推荐的传值方式
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

