加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Flask数据库关系

发布时间:2020-12-20 10:52:51 所属栏目:Python 来源:网络整理
导读:基础配置 from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)db = SQLAlchemy(app)app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email?protected]/flask' 一对多 class Singer(db.Model): id = db.C

基础配置

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email?protected]/flask'

一对多

class Singer(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(70),unique=True)
    songs = db.relationship('Song',backref='singer')

class Song(db.Model):
    id = db.Column(db.Integer,unique=True)
    singer_id = db.Column(db.Integer,db.ForeignKey('singer.id'))

多对一(不是必须时还是用与一对多吧)

比一对多的用法,会少一个从一里访问多的字段。

class Citizen(db.Model):
    id = db.Column(db.Integer,unique=True)
    city_id = db.Column(db.Integer,db.ForeignKey('city.id'))
    city = db.relationship('City')


class Country(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(79),unique=True)
    capital = db.relationship('Capital',uselist=False)

一对一

class Country(db.Model):
    id = db.Column(db.Integer,uselist=False)


class Capital(db.Model):
    id = db.Column(db.Integer,unique=True)
    country_id = db.Column(db.Integer,db.ForeignKey('country.id'))
    country = db.relationship('Country'

多对多

association_table = db.Table(
    'association',db.Column('student_id',db.Integer,db.ForeignKey('student.id')),db.Column('teacher_id',db.ForeignKey('teacher.id'))
)


class Student(db.Model):
    id = db.Column(db.Integer,unique=True)
    grade = db.Column(db.String(20))
    teachers = db.relationship(
        'Teacher',secondary=association_table,backref='students')


class Teacher(db.Model):
    id = db.Column(db.Integer,unique=True)
    office = db.Column(db.String(20))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读