zoukankan      html  css  js  c++  java
  • 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))
    
  • 相关阅读:
    面试中你能做到随机应变吗? 沧海
    QQ只是一场意外 沧海
    面 试 中 要 慎 言 沧海
    你会应对这些面试题吗? 沧海
    面 试 小 技 巧 沧海
    面试抓住最初三分钟至关重要 沧海
    面试的十二种高级错误 沧海
    几种有难度的面试 沧海
    面试技巧: 轻松过关10种方法 沧海
    面 试 细 节 一 点 通 沧海
  • 原文地址:https://www.cnblogs.com/tmdhhl/p/11408409.html
Copyright © 2011-2022 走看看