用sqlalchemy连接pg数据库报错记录

报错代码

from sqlalchemy import create_engine, text
import pandas as pd
# 替换下面的参数为您实际的数据库连接信息
db_type = 'postgresql'
username = 'postgres'
password = '*****'
host = '10.XXXX.175' # 默认为 localhost
port = '5432' # 默认为 5432
database_name = 'my_database'

# 创建数据库引擎
engine = create_engine(f'{db_type}://{username}:{password}@{host}:{port}/{database_name}')

sql = "select * from my_database.table;"

df = pd.read_sql(sql, engine)
print(df.head())

报错信息:AttributeError: ‘OptionEngine’ object has no attribute ‘execute’

原因:需要传递“连接”变量而不是“引擎”

更改代码

engine = create_engine(f'{db_type}://{username}:{password}@{host}:{port}/{database_name}')
sql = "select * from my_database.table;"
conn = engine.connect()
df = pd.read_sql(sql, conn)

报错信息:sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: ‘select * from my_database.table;’

解决办法:利用sqlalchemy中的text函数将sql字符串加工为原生sql。

正确代码:

from sqlalchemy import create_engine, text
conn = engine.connect()
df = pd.read_sql(text(sql), conn)

你可能感兴趣的:(问题记录,数据库)