python - pypyodbc 查询中的字符串无法识别
问题描述
我最近决定将我的一些脚本从 jupyter notebook 迁移到普通的旧 python 脚本 (.py) 有几个原因。在 jupyter 中,一切正常,但是相同的代码在 SQL 中没有做任何事情。我知道这个过程是正确的,因为如果我直接在服务器上运行它,它就可以了。
我的代码是:
query = 'EXEC [dbo].[kpi_init] '+kpi+';'
cursor.execute(query)
我尝试添加引号,像这样,没有成功:
query = 'EXEC [dbo].[kpi_init] \''+kpi+'\';'
我尝试使用参数化查询,像这样,没有成功:
query = 'EXEC [dbo].[kpi_init] ?;'
cursor.execute(query, [kpi])
值得一提的是,kpi 是一个简单的变量,包含 A00 或 X23 之类的东西,它就在那里,因为我可以将它打印出来并用它来触发外部函数。只有我的 SQL 代码不起作用。我错过了什么吗?
谢谢
解决方案
试试这个:
query = f"EXEC [dbo].[kpi_init] '{kpi}'"
cursor.execute(query)
推荐阅读
- javascript - 该系统找不到指定的路径。内部/模块/cjs/loader.js:834
- rust - iter().min_by() 上的闭包签名中的生命周期问题
- javascript - 为什么我在从 .net 核心控制器调用 ajax 数据表 api 时不断收到 400 错误?
- gradle - 如何在 gradle 的配置中使用当前版本
- html - 你能把跨度放在css的中心吗?
- php - 您如何访问公共 Spamhaus DBL 服务?
- html - 如何使 div 元素显示为与列的 flex 方向内联?
- netsuite - 使用 N/Task 模块运行保存的搜索时,是否可以将过滤器添加到保存的搜索中
- laravel - $query->with() 正在工作,但 $query->load() 在 Laravel 中不起作用
- git - 使用 --amend 提交重写后,CodeCommit 失败