J'essaie d'apprendre des relations dans flask_sqlalchemy mais j'ai vraiment du mal à faire fonctionner le code. Tout d'abord il y a un manque de bons tutoriels sur ce sujet, mais j'ai quand même joint des bribes d'information pour écrire du code mais je n'obtiens pas les résultats attendus. Pouvez-vous expliquer ce que je fais de mal dans ce code?Comprendre une ou plusieurs relations dans flask_sqlalchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://<my_user>:<my_password>@localhost/flask_apps'
db = SQLAlchemy(app)
class Universe(db.Model):
__tablename__ = 'universe'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30))
hero = db.relationship('Characters', backref='u_name', lazy='dynamic')
class Characters(db.Model):
__tablename__= 'characters'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
uni = db.Column(db.Integer, db.ForeignKey('universe.id'))
if __name__ == '__main__':
db.drop_all()
db.create_all()
dc = Universe(name='DC')
marvel = Universe(name='Marvel')
db.session.add(dc)
db.session.add(marvel)
db.session.commit()
flash = Characters(name='Flash', u_name=dc)
batman = Characters(name='Batman', u_name=dc)
arrow = Characters(name='Arrow', u_name=dc)
ironman = Characters(name='IronMan', u_name=marvel)
thor = Characters(name='Thor', u_name=marvel)
db.session.add(flash)
db.session.add(ironman)
db.session.commit()
u = Universe.query.filter_by(name='DC').first()
print(u.hero)
Et c'est la sortie que j'obtiens.
SELECT characters.id AS characters_id, characters.name AS characters_name, characters.uni AS characters_uni
FROM characters
WHERE %(param_1)s = characters.uni
Process finished with exit code 0
Je m'attends à obtenir les noms de caractères qui appartiennent à cet univers particulier. Pas vraiment sûr de ce qui me manque ici.