Reputation: 5938
its possible to use variables on filters?
My actual code:
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
This works:
for c in session.query(Services).filter(Services.name.in_(['blue','red'])):
print(c)
result:
circle, square
But using avariable, returns:
services = ('blue','red')
for c in session.query(Services).filter(Services.name.in_([services])):
print(c)
result:
mysql.connector.errors.ProgrammingError: Failed processing pyformat-parameters; 'MySQLConverter' object has no attribute '_tuple_to_mysql'
Thanks in advance!
Upvotes: 0
Views: 2588
Reputation: 1121654
services
is already a sequence, no need to wrap it in a list:
for c in session.query(Services).filter(Services.name.in_(services)):
Upvotes: 2