不是可执行对象:“SELECT * FROM LoanParcel”

wan*_*anx 5 python database sqlalchemy dataframe

我想通过将数据库创建为数据框来使用数据库,并且我使用 sqlalchemy 来导入 create_engine,但我坚持使用不是可执行对象:“SELECT * FROM LoanParcel”,其中 LoanParcel 是数据库的名称我想创建一个数据框,我应该如何修复它?

视图.py

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://mariadb:mariadb@localhost:9051/mariadb")

def user_detail(req, id):
    conn = engine.connect()
    QLoanParcel = "SELECT * FROM LoanParcel"
    dfParcel = pd.read_sql(QLoanParcel, conn)
    conn.close()
    df = dfParcel.drop(["id", "date_add", "start_date"], axis = 1)
    return render(req,'pages/user_detail.html')
Run Code Online (Sandbox Code Playgroud)

ljm*_*jmc 10

SQLAlchemy 2 引入了重大更改,您需要将 SQL 查询包装在 a 中text以创建可执行对象。

另外,LoanParcel您的示例中是表而不是数据库。

from sqlalchemy import create_engine, text

engine = create_engine("mysql+pymysql://mariadb:mariadb@localhost:9051/mariadb")

def user_detail(req, id):
    conn = engine.connect()
    QLoanParcel = text("SELECT * FROM LoanParcel")
    dfParcel = pd.read_sql(QLoanParcel, conn)
    conn.close()
    df = dfParcel.drop(["id", "date_add", "start_date"], axis = 1)
    return render(req,'pages/user_detail.html')
Run Code Online (Sandbox Code Playgroud)