我得到了一个包含多个项目的数据库,其结构类似于以下内容:
- 我们的客户Bob的模式:bob_法律的、bob_docs、bob_misc
- 我们的客户Jess的模式:jess_法律的、jess_docs、jess_misc
我目前使用f-strings来构建查询:
query = f"SELECT * FROM {client}_legal.my_table WHERE country = '{country_name}';"
result = pd.read_sql(query, con)
但我想参数化构建查询。我尝试在panda的read_sql
函数中使用params
参数。但它不工作,因为它输出如下表:
SELECT * FROM 'bob'_legal.my_table WHERE country = 'canada';"
表bob
现在用单引号括起来,它会创建一个SQL语法错误。是否有其他方法来完成这项工作,但仍然使用read_sql
功能?似乎没有参数化表的选项。
1条答案
按热度按时间acruukt91#
我假设您使用的是PostgreSQL或任何支持模式的数据库。
使用
client = "bob"
,您的代码对我来说工作得很好。或者(受到 *@amn34的 * answer的启发),您可以尝试使用Identifier
s: