繁体   English   中英

在sqlalchemy查询过滤器上使用变量

[英]Using a variable on sqlalchemy query filter

它可以在过滤器上使用变量吗?

我的实际代码:

import sqlalchemy
from sqlalchemy import Table, MetaData, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base


location = 'localhost'
engine_str = 'mysql+mysqlconnector://xxx:xxx@xxx/xxx'.format(location)
engine = sqlalchemy.create_engine(engine_str, echo=False)
session = sessionmaker(bind=engine)
connection = engine.connect()
session = session(bind=connection)
metadata = MetaData()
Base = declarative_base()

class Services(Base):
    """
    Service details on database
    """
    __tablename__ = 'some_table'
    id = Column(Integer, primary_key=True)
    color= Column(String)
    shape= Column(String)

    def __repr__(self):
        return self.shape

这有效:

for c in session.query(Services).filter(Services.name.in_(['blue','red'])):
    print(c)

结果:

    circle, square

但是使用可变的,返回:

services = ('blue','red')
for c in session.query(Services).filter(Services.name.in_([services])):
    print(c)

结果:

mysql.connector.errors.ProgrammingError: Failed processing pyformat-parameters; 'MySQLConverter' object has no attribute '_tuple_to_mysql'

提前致谢!

services 已经是一个序列,不需要将它包装在一个列表中:

for c in session.query(Services).filter(Services.name.in_(services)):

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM