提交 a40b289d 编写于 作者: Amoor123's avatar Amoor123

'20211021模型关系测试'

上级 c3130ee5
......@@ -2,8 +2,11 @@ from flask import Flask
from flask_session import Session
import settings
from models import db
app=Flask(__name__)
app.config.from_object(settings.Dev)
se=Session()
se.init_app(app)
\ No newline at end of file
se.init_app(app)
db.init_app(app)
from mainapp import app
from mainapp.views import user_view
# from flask_script import Manager
from models import db
from flask import render_template
@app.errorhandler(404)
......@@ -13,8 +11,6 @@ def notFound(error):
if __name__ == '__main__':
# 注册蓝图路由
app.register_blueprint(user_view.blue,url_prefix='/user')
db.init_app(app)
# manager=Manager(app)
# manager.run()
app.run(host='localhost',port=5000,debug=True)
from models import db
# 用户-角色多对多表
user_role = db.Table('user_role',
db.Column('user_id',db.Integer,db.ForeignKey('user_model.id')),
db.Column('role_id',db.Integer,db.ForeignKey('role.id')))
class UserModel(db.Model):
#主键
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
#普通字段
name=db.Column(db.String(30),nullable=False,comment='姓名')
auth_key = db.Column(db.String(100),nullable=False,comment='密码')
phone=db.Column(db.String(11),unique=True,comment='电话')
#多对多索引关系
roles=db.relationship('Role',secondary=user_role,backref='users')
# 角色模型
class Role(db.Model):
#主键
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name=db.Column(db.String(30),nullable=False)
auth_key = db.Column(db.String(100),nullable=False)
phone=db.Column(db.String(11),unique=True)
#普通字段
name=db.Column(db.String(30),nullable=False,comment='角色名称')
#用户的卡包模型
class CardModel(db.Model):
#主键
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
#普通字段
publisher=db.Column(db.String(30),nullable=False,comment='发行商')
number=db.Column(db.String(40),nullable=False,comment='卡号')
money=db.Column(db.Float,nullable=False,comment='余额',default=0)
#外键
user_id=db.Column(db.Integer,db.ForeignKey('user_model.id'),nullable=True,comment='用户的id')
#模型的反向引用
user=db.relationship('UserModel',backref=db.backref('cards',lazy=True))
\ No newline at end of file
from unittest import TestCase
from mainapp import app
from models import db
from models.user_model import UserModel, CardModel, Role
class TestUser(TestCase):
def test_add(self):
app.app_context().push()
user=UserModel()
user.name='li'
user.auth_key='dsadas'
user.phone='31231233131'
db.session.add(user)
print(user.name)
db.session.commit()
def test_waijianguanxi(self):
app.app_context().push()
user=UserModel.query.get(1)
print(user.name)
print(user.cards)
card=CardModel()
card.number='131230293023903902390923021'
card.money=0
card.publisher='健身房'
db.session.add(card)
user.cards.append(card)
db.session.commit()
def test_addmany(self):
app.app_context().push()
li=[]
for i in range(10):
user=UserModel()
user.phone='123123213'+str(i)
user.name='dsd'+str(i)
user.auth_key='dsafafjiaj'+str(i)
li.append(user)
db.session.add_all(li)
db.session.commit()
def test_query1(self):
app.app_context().push()
user=UserModel.query.get(1)
print(user.name)
# user2=UserModel.query.filter(user.name==UserModel.name.like('dsd%'))
user2=UserModel.query.filter(UserModel.name.like('dsd%'))
# print(user2[0].name)
for i in user2:
print(i.id,i.name)
def test_query2(self):
app.app_context().push()
user=db.session.query(UserModel).all()
for i in user:
print(i.name,i.id)
user=db.session.query(UserModel.name,UserModel.phone).order_by(UserModel.phone).limit(3)
for i in user:
print(i.name,i.phone)
def test_update(self):
app.app_context().push()
user=UserModel.query.get(1)
user.name='AAA'
user.phone='213231312'
user.auth_key='asdsdjasidnio'
db.session.commit()
def testremove(self):
app.app_context().push()
user=UserModel.query.get(2)
print(user.name,user.phone)
db.session.delete(user)
db.session.commit()
#N:M
def test_addmodel2(self):
app.app_context().push()
user=UserModel.query.get(1)
role=Role()
role.name='超级管理员'
db.session.add(role)
user.roles.append(role)
db.session.commit()
def test_query(self):
app.app_context().push()
user=UserModel.query.get(1)
print(user.roles)
role=Role.query.all()[0]
print(role.users)
def test_update2(self):
app.app_context().push()
user=UserModel.query.get(1)
user.roles[0].name='普通管理员'
db.session.commit()
def test_del2(self):
app.app_context().push()
role=Role()
role.name='实习工'
db.session.add(role)
users=UserModel.query.filter(UserModel.name.like('dsd%'))
for user in users:
user.roles.append(role)
db.session.commit()
def test_del3(self):
app.app_context().push()
roles=Role.query.filter(Role.name=='实习工').all()
for role in roles:
users=role.users
for user in users:
db.session.delete(user)
db.session.commit()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册