sql >> データベース >  >> RDS >> Mysql

SQLAlchemyはin_()にリテラルを使用するように強制します

    (この次の記事を書いている時点で)バージョン1.4では、拡張bindparamを使用できます。 literal_execute=Trueを使用 あなたが求めている効果のためだけに:

    In [2]: class Foo(Model):
       ...:     id = Column(Integer, primary_key=True)
       ...:     data = Column(Integer)
    
    In [3]: metadata.create_all()
    
    In [4]: session.query(Foo).\
       ...:     filter(Foo.data.in_(
       ...:         bindparam('xs', range(10), expanding=True, literal_execute=True))).\
       ...:     all()
    2019-09-07 20:35:04,560 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
    2019-09-07 20:35:04,561 INFO sqlalchemy.engine.base.Engine SELECT foo.id AS foo_id, foo.data AS foo_data 
    FROM foo 
    WHERE foo.data IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    2019-09-07 20:35:04,561 INFO sqlalchemy.engine.base.Engine ()
    Out[4]: []
    
    


    1. OR演算子を使用する場合の正しい索引付け

    2. 同じレコードを保存するListArray

    3. SQLは値を複数の行に分割します

    4. ms sqlserver2005で開いている/アクティブな接続の総数を確認する方法