flask sqlalchemy(二)

引入一对多的数据库关系类型,以Flask-web开发中的示例为例:

#encoding:utf8
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir,'data.sqlite')
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64),unique=True)
    users = db.relationship('User',backref='role',lazy='dynamic')
    #创建和User模型的关系,给User一个role的属性,懒惰加载为动态。

def __repr__(self):
    return '<Role %r>' % self.name

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(64),unique=True)
    role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))
    #创建以列,以roles.id的值为它的值


def __repr__(self):
    return '<User %r>' % self.username

在shell中操作:

from ceshi import db
from ceshi import User,Role
db.create_all()
admin = Role(name=’Admin’)
user = Role(name=’User’)
wsj=User(username=’wsj’,role=admin)
#参数role为backref所给User模型的属性
aaa=User(username=’aaa’,role=user)
db.session.add_all([admin,user,wsj,aaa])
db.session.commit()
User.query.all()
[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值