python - 在 Python 中使用 %sql 时,如何删除从 python 传递到 %sql 的变量的引号?
问题描述
我正在尝试在 python 中运行一个 for 循环,它迭代 postgresql 数据库中的所有表名,并返回每个表的变量计数。但是,如果我使用带有 : 的 %sql 传递变量,该变量将带有引号并使表名无效。例如:
tablename = 'film'
film_count = %sql select count(*) from :tablename
我想用 %sql 传递的是
film_count = %sql select count(*) from film
然而变成了
film_count = %sql select count(*) from 'film'
然后系统返回语法错误:
(psycopg2.errors.SyntaxError) syntax error at or near "'film'"
LINE 1: select count(*) from 'film'
^
谁能帮我理解如何解决这个问题?谢谢!
解决方案
如https://pypi.org/project/ipython-sql/中的示例所示,:
将用引号将变量括起来。
使用$
or{}
代替
推荐阅读
- haskell - 如何优雅地创建可选值列表?
- html - 脚本不返回显示
- java - 收到错误“使用填充密码解密时输入长度必须是 16 的倍数”
- mypy - 参数“xyz”到“ABC”具有不兼容的类型“Tuple[None, ...]”;预期“元组[无]”
- kubernetes - 在将集群加入联邦 v2 之前如何处理集群?
- vue.js - Vue Transitions - 如何执行一次性开启和关闭动画
- ios - 是否可以使用 iOS SDK 更改 Amazon Cognito 中的用户名?
- javascript - 如何修复“加载资源失败:服务器响应状态为 404(未找到)”
- entity-framework - 如何从 EF 的输出中重新执行生成的查询
- python - 带有张量流的 NameError:为什么这不起作用?