sqlalchemy postgresql donde int = cadena

Tengo 0 experiencia con postgresql y estoy implementando una aplicación escrita en python utilizando sqlalchemy en un servidor con postgres.

Para el desarrollo, usé un servidor sqlite.

Las cosas van bastante bien, pero me topé con un bache que no sé cómo resolver.

Tengo tres mesas que se ven así

class Car(db.Model): id= db.Column(db.Integer, primary_key=True) ... class Truck(db.Model): id= db.Column(db.String(32), primary_key=True) ... class Vehicles(db.Model): id= db.Column(db.Integer, primary_key=True) type= db.Column(db.String) #This is either 'car' or 'truck' value= db.Column(db.String) #That's the car or truck id ... 

Tengo una consulta que selecciona de Vehicles donde type = 'car' AND value = 10 Esto está generando un error: sqlalchemy.exc.ProgrammingError: (ProgrammingError) operator does not exist: integer = character varying

Así que supongo que esto se debe a que Car.id es un int y Vehicle.value es una cadena ..

¿Cómo escribir esta consulta en sqlalchemy? ¿Hay alguna forma de escribirlo y hacerlo compatible con mi entorno de desarrollo sqlite y la producción pgsql?

actualmente parece que

db.session.query(Vehicle).filter(Car.id == Vehicle.value)

PD: la identificación del camión tiene que ser una cadena y la identificación del auto tiene que ser una int. No tengo control sobre eso.

Simplemente lanzar a una cadena:

 db.session.query(Vehicle).filter(str(Car.id) == Vehicle.value) 

si Car.id es una variable local que es un int.

Si necesita usar esto en una unión, haga que la base de datos lo convierta en una cadena:

 from sqlalchemy.sql.expression import cast db.session.query(Vehicle).filter(cast(Car.id, sqlalchemy.String) == Vehicle.value) 

Si el valor de la cadena en la otra columna contiene dígitos y posiblemente espacios en blanco, es posible que deba considerar recortar, o en su lugar convertir el valor de la cadena en un entero (y dejar la columna del entero en un entero).