[英]Flask-SQLAlchemy Multiple Databases to form a query
I am new to using Flask SQLAlchemy and I have a few questions on how can how can I link separate databases together to form a query.我是使用 Flask SQLAlchemy 的新手,我对如何将单独的数据库链接在一起以形成查询有几个问题。
I have 3 databases: User , Homework , Questions , where 1 user can have many homework and 1 homework can have many questions.我有 3 个数据库: User 、 Homework 、 Questions ,其中 1 个用户可以有很多作业,1 个作业可以有很多问题。 I have made 3 separate.py files for the 3 classes and each file calls simple functions like query.all(), and some simple filtering.
我为 3 个类制作了 3 个单独的 .py 文件,每个文件都调用简单的函数,如 query.all() 和一些简单的过滤。
I have previously learned MySQL and I am wondering how can I create an SQLAlchemy equivalent of the following query:我以前学过 MySQL ,我想知道如何创建与以下查询等效的 SQLAlchemy:
SELECT * FROM user, homework, questions
WHERE user.user_id = homework.user_id
AND homework.homework_id = questions.homework_id
My question is how do I go about achieving this?我的问题是我如何实现这一目标? Do I make a new file and find a way to bind these databases together or is there a more optimal way of doing it?
我是创建一个新文件并找到将这些数据库绑定在一起的方法,还是有更优化的方法?
Also, how do I go about retrieving aggregated function values?另外,我如何 go 关于检索聚合的 function 值? For instance, the average marks one would get for each homework.
例如,每个作业的平均分数。
User.py用户.py
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(20), nullable=False)
Homework.py作业.py
class Homework(db.Model):
__tablename__ = 'homework'
homework_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
user_id= db.Column(db.Integer, nullable=False)
subject = db.Column(db.String(20), nullable=False)
Question.py问题.py
class Question(db.Model):
__tablename__ = 'question'
question_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
homework_id = db.Column(db.Integer, nullable=False)
marks = db.Column(db.Integer, nullable=False)
You can create relationships amongst your tables using the following您可以使用以下方法在表之间创建关系
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(20), nullable=False)
class Homework(db.Model):
__tablename__ = 'homework'
homework_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), nullable=False)
subject = db.Column(db.String(20), nullable=False)
class Question(db.Model):
__tablename__ = 'question'
question_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
homework_id = db.Column(db.Integer, db.ForeignKey('homework.homework_id'), nullable=False)
marks = db.Column(db.Integer, nullable=False)
Then you can access info from a given table using the following insert your desired user_id in replace for xxx然后,您可以使用以下方法从给定表中访问信息,将所需的 user_id 替换为 xxx
user_object = User.query.filter_by(user_id=xxx).first()
username = user_object.username
user_id_value = user_object.user_id
homework_object = Homework.query.filter_by(user_id=user_id_value).first()
subject = homework_object.subject
homework_id_value = homework_object.homework_id
question_object = Question.query.filter_by(homework_id=homework_id_value).first()
marks = question_object.marks
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.