小编tk1*_*111的帖子

Sqlalchemy - 如何从带有绑定参数的insert(),update()语句中获取原始sql?

例:

from sqlalchemy.dialects import mysql
from sqlalchemy import Integer, Column, update, insert
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Test(Base):
    __tablename__ = "test"

    a = Column(Integer, primary_key=True)
    b = Column(Integer)


update_stmt = update(Test).where(Test.a == 1).values(b=2)
print update_stmt.compile(dialect=mysql.dialect(), compile_kwargs=  {"literal_binds": True})

insert_stmt = insert(Test).values(a=1, b=1)
print insert_stmt.compile(dialect=mysql.dialect())
Run Code Online (Sandbox Code Playgroud)

结果是:

UPDATE test SET b=%s WHERE test.a = %s
INSERT INTO test (a, b) VALUES (%s, %s)
Run Code Online (Sandbox Code Playgroud)

问题是如何让sqlalchemy像这样生成smth:

UPDATE test SET b=2 WHERE test.a = 1
INSERT INTO test (a, b) VALUES (1, …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy

11
推荐指数
1
解决办法
3895
查看次数

标签 统计

orm ×1

python ×1

sqlalchemy ×1