首页 > 解决方案 > 在 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'
                             ^

谁能帮我理解如何解决这个问题?谢谢!

标签: pythonpostgresqlipython

解决方案


如https://pypi.org/project/ipython-sql/中的示例所示,:将用引号将变量括起来。

使用$or{}代替


推荐阅读