flask sqlalchemy uuid字段
时间: 2023-08-16 22:08:00 浏览: 158
essential_sqlalchemy
5星 · 资源好评率100%
在Flask-SQLAlchemy中进行多对多查询可以通过中间表来实现。以下是一个示例代码:
假设我们有两个模型:User和Role,它们之间是多对多的关系。我们可以创建一个名为user_role的中间表来存储用户和角色之间的关系。
```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'your_database_uri'
db = SQLAlchemy(app)
user_role = db.Table('user_role',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('role_id', db.Integer, db.ForeignKey('role.id'))
)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
roles = db.relationship('Role', secondary=user_role, backref=db.backref('users', lazy='dynamic'))
class Role(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
# 查询某个用户的所有角色
user = User.query.filter_by(name='wang').first()
roles = user.roles
# 查询某个角色的所有用户
role = Role.query.filter_by(name='admin').first()
users = role.users
# 查询拥有特定角色的所有用户
role = Role.query.filter_by(name='admin').first()
users = User.query.filter(User.roles.contains(role)).all()
```
在上述代码中,我们定义了一个中间表user_role,它包含了user_id和role_id两个外键。User模型和Role模型之间通过db.relationship进行关联,并通过secondary参数指定了中间表。这样,我们就可以通过User.roles和Role.users来查询相关的角色和用户了。
请注意,你需要根据自己的数据库设置来配置SQLALCHEMY_DATABASE_URI的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文