在pycharm中使用pyodbc库与sqlserver数据库建立连接,想执行一条查询sql语句获取数据,但是where过滤条件需要用户输入,因此写了input并赋值给了变量名name,但执行的时候却报错了。如果在代码中直接写是可以正常运行的。想请问如何能够将用户输入的值传入sql语句
4条回答 默认 最新
关注 参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。
在Python中,为了防止SQL注入攻击并确保数据安全,当需要将用户输入的值作为SQL查询条件时,应使用参数化查询。在
pyodbc
库中,你可以使用占位符(如?
或%s
)来表示参数,并将实际值放在execute方法的第二个参数中作为一个元组。以下是一个示例,说明如何使用用户输入与pyodbc执行参数化的SQL查询:
import pyodbc # 获取用户输入 name = input("请输入要查询的名称: ") # 创建数据库连接 server = 'your_server' database = 'your_database' username = 'your_username' password = 'your_password' cnxn_str = ( f"DRIVER={{ODBC Driver 17 for SQL Server}};" f"SERVER={server};" f"DATABASE={database};" f"UID={username};" f"PWD={password}" ) conn = pyodbc.connect(cnxn_str) # 创建游标对象 cursor = conn.cursor() # 参数化查询 query = "SELECT * FROM YourTable WHERE Name = ?" params = (name,) # 执行查询 cursor.execute(query, params) # 获取结果 rows = cursor.fetchall() # 处理结果 for row in rows: print(row) # 关闭游标和连接 cursor.close() conn.close()
请替换上述代码中的
your_server
、your_database
、your_username
、your_password
以及YourTable
和Name
为你的实际服务器地址、数据库名、用户名、密码以及表名和字段名。通过这种方式,用户的输入会被正确地转义和引用,从而避免了潜在的安全风险。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
- ¥15 arcgis处理土地利用道路 建筑 林地分类
- ¥30 java 项目中同包中,无法在子文件中引用
- ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
- ¥100 寻会做云闪付tn转h5支付链接的技术
- ¥15 DockerSwarm跨节点无法访问问题
- ¥15 使用dify通过OpenAI 的API keys添加OpenAI模型时报了“Connection Error”错误
- ¥40 想找个软件,但我不知道怎么找到它,我甚至不知道有没有
- ¥15 怎么把60秒的视频时长改成显示0秒?且视频内容没有任何变化的正常播放?目的是为了解决一些平台对视频时长的要求,最好有自动处理的工具!
- ¥15 累加器设初值为00H