Sqlalchemy - how to get raw sql from insert(), update() statements with binded params?

前端 未结 2 1202
Happy的楠姐
Happy的楠姐 2020-12-16 17:47

Example:

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


        
2条回答
  •  时光取名叫无心
    2020-12-16 18:27

    I just run this snippet on python 2.7 and SQLAlchemy (1.0.13) and it worked.

    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(), compile_kwargs={"literal_binds": True})
    

    my output is:

    UPDATE test SET b=2 WHERE test.a = 1
    INSERT INTO test (a, b) VALUES (1, 1)
    

    Maybe something is wrong with your environment?

提交回复
热议问题