Sqlalchemy postgresql wo int = string

Ich habe 0 Erfahrung mit postgresql und bin die Bereitstellung einer App in Python mit sqlalchemy zu einem Server mit postgres geschrieben.

Für die Entwicklung habe ich einen sqlite Server benutzt.

Die Dinge gehen ziemlich glatt, aber ich traf eine Beule, ich weiß nicht, wie man es lösen kann.

Ich habe drei Tische, die so aussehen

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 ... 

Ich habe eine Abfrage, die aus Vehicles auswählt, wo type = 'car' AND value = 10 Dies ist ein Fehler: sqlalchemy.exc.ProgrammingError: (ProgrammingError) operator does not exist: integer = character varying

Also ich denke, das ist, weil Car.id ist ein int und Vehicle.value ist ein String ..

Wie schreibe ich diese Frage in sqlalchemy? Gibt es eine Möglichkeit, es zu schreiben und es kompatibel mit meiner sqlite dev Umgebung und der pgsql Produktion zu machen?

Derzeit sieht es so aus

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

PS: Die LKW-ID muss eine Saite sein und die Auto-ID muss ein int sein. Ich habe keine Kontrolle darüber.

One Solution collect form web for “Sqlalchemy postgresql wo int = string”

Einfach zu einem String geworfen:

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

Wenn Car.id eine lokale Variable ist, die eine int ist.

Wenn du das in einer Verknüpfung nutzen musst, habe ich die Datenbank in einen String geworfen:

 from sqlalchemy.sql.expression import cast db.session.query(Vehicle).filter(cast(Car.id, sqlalchemy.String) == Vehicle.value) 
  • SQLite Performance Benchmark - warum ist: Speicher: so langsam ... nur 1.5X so schnell wie Festplatte?
  • Sqlite3.OperationalError: nahe "WHERE": Syntaxfehler
  • Python- und Hebräischcodierung / Decodierungsfehler
  • Warum mein Python sieht nicht pysqlite?
  • Python datenbank / sql programmierung - wo zu starten
  • Exportieren von / importieren zu numpy, scipy in SQLite und HDF5 Formate
  • Python: Transformieren Sie "Liste der Tupel" in eine flache Liste oder 1 Matrix
  • Laden Sie die SQL-Tabelle automatisch, indem Sie Daten aus der Textdatei lesen
  • Wie bekomme ich die neuesten Einsendungen von sqlite db mit dem Zähler der Einträge über Django ORM
  • Wie teilt man kommagetrennte Werte in mehrere Zeilen mit Python auf
  • Python und SQLite: in die Tabelle einfügen
  • Python ist die beste Programmiersprache der Welt.