Pandas函数read_sql()在最终的sql查询中插入参数引用[duplicate]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas函数read_sql()在最终的sql查询中插入参数引用[duplicate]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

当使用带参数的read_sql()从postgresql数据库读取表时,最终的sql查询包含由单引号括起的参数,这使得postgresql数据库无法理解查询。这是我使用的代码:

import sqlalchemy as db
import pandas as pd

engine = db.create_engine('postgresql+psycopg2://myuser:mypass@localhost/mydb')

df = pd.DataFrame('a': [11,21], 'b': [31,41])
df.to_sql('test1', engine, if_exists='append', index=False)

df1 = pd.read_sql("SELECT * FROM %(table_name)s;", engine, params='table_name': 'test1')

print(df1)

表test1是在数据库中按预期创建的,但当我尝试将其读回到pandas数据帧时,我收到以下错误:error message

答案

为什么不呢?

table_name = "test1"
query = f"SELECT * FROM table_name;"

df1 = pd.read_sql(query, engine)

以上是关于Pandas函数read_sql()在最终的sql查询中插入参数引用[duplicate]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas read_sql() 可以返回哪些异常

pd.read_sql字符类型

在 pandas 中为 read_sql 指定 dtypes

带参数的 Pandas read_sql

pandas read_sql 没有读取所有行

pandas读写结构化数据(read_csv,read_table, read_excel, read_html, read_sql)