• Flask数据库关系


    基础配置

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    
    app = Flask(__name__)
    db = SQLAlchemy(app)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost/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, primary_key=True)
        name = db.Column(db.String(70), unique=True)
        singer_id = db.Column(db.Integer, db.ForeignKey('singer.id'))
    

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

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

    class Citizen(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(70), 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, primary_key=True)
        name = db.Column(db.String(79), unique=True)
        capital = db.relationship('Capital', uselist=False)
    
    
    class Capital(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(70), 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.Integer, db.ForeignKey('teacher.id'))
    )
    
    
    class Student(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(70), 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, primary_key=True)
        name = db.Column(db.String(70), unique=True)
        office = db.Column(db.String(20))
    
  • 相关阅读:
    bitcoin PoW原理及区块创建过程
    Hyperledger Fabric(v1.1.0)编译时遇到的问题
    Hyperledger Fabic中的Transaction流程
    mint linux 18.3 遇到“已安装的 post-installation 脚本 返回了错误号 127 ”问题的解决
    redis--解析字符串
    golang 统计uint64 数字二进制存储中1的数量
    c++ std 最小堆的使用 (用于实现top100之类的功能)
    Linux 信号signal处理函数
    Linux 信号signal处理机制
    LinuxMint 下 B站 番 blv 缓存 转 mp4
  • 原文地址:https://www.cnblogs.com/tmdhhl/p/11408409.html
Copyright © 2020-2023  润新知