使用falsk快速搭建自己的本地仓库

1.创建模型

	   class MODLENAME(db.Model):
	        __tablename__=TABLENAME
	        COLUMN_NAME=db.Column(db.TYPE,OPTIONS)
    MODELNAME : 模型名称
    TABLENAME : 对应的表名
    COLUMN_NAME : 对应的列名
    TYPE : 列类型
    OPTIONS : 列选项
    TYPE:   
        Integer,SmallInteger,BigInteger,BooleanFloat,Numeric
        String,Text,Unicode,UnicodeText,Date,Time,DateTime
    OPTIONS:
        primary_key : True or False
        unique : True or False
        index : True or False
        nullable : True or False
            默认是允许为空(True)
        default : 定义默认值

2.数据库操作

1.插入
    db.session.add(Models对象)
    db.session.commit()
    自动提交:
        app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
2.查询
    **1.基于 db.session 查询**
        1.db.session.query()
            查询基础,返回查询对象
        2.查询执行函数
            目的:用于得到最终的结果
            all() , first() , first_or_404() , count()
        3.查询过滤器函数
            目的:在基础查询后增加筛选条件
            1.filter()
                注意:必须使用 实体类.属性 做筛选
                1.db.session.query(Models).filter(Models.column > num).all()
                2.db.session.query(Models).filter(Models.col1>num1,Models.col2>num2)
                3.db.session.query(Models).filter(or_(条件1,条件2)).all()
                4.db.session.query(Models).filter(Models.column.like('%w%')).all()
                5.db.session.query(Models).filter(Models.column.in_(['','',''])).all()
                6.聚合
                    db.session.query(func.聚合函数(Models.Column).label('别名'))
                        聚合函数:
                            sum() : 求和
                            count() : 求数量
                            max()
                            min()
                            avg()
            2.filter_by()
            3.limit()
            4.order_by()
            5.group_by()
    **2.基于Models进行查询
        Models.query.查询过滤器**函数(条件参数).查询执行函数()
3.删除
    1.查询出要删除的实体对象
        u=db.session.query(Models).filter_by(xxx).first()
    2.根据提供的 删除方法进行删除
        db.session.delete(u)
    注意:
        真正的删除并不是通过删除操作完成,而是通过修改完成的
4.修改
    1.查
        将 要修改的信息查询出来
    2.改
        实体对象.属性 = 值
    3.保存
        db.session.add(实体对象)

建库应用示例:

from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy

import pymysql
pymysql.install_as_MySQLdb()

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@localhost:3306/flask"
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
db = SQLAlchemy(app)
# db.init_app(app)


class Course(db.Model):
    __tablename__ = "course"
    id = db.Column(db.Integer,primary_key=True)
    cname = db.Column(db.String(30))
    #增加关联属性和反向引用关系
    #关联属性:在course对象中通过哪个属性能够得到对应的所有的teacher
    #反向引用关系:在teacher对象中通过哪个属性能找到它对应的course
    teachers = db.relationship('Teacher',backref='course',lazy="dynamic")

    def __init__(self,cname):
        self.cname = cname

    def __repr__(self):
        return "<Course:%r>" % self.cname

class Teacher(db.Model):
    __tablename__ = 'teacher'
    id = db.Column(db.Integer,primary_key=True)
    tname = db.Column(db.String(30))
    tage = db.Column(db.Integer)
    #增加一列:course_id,外键列,引用自主键表(course)的主键列(id)
    course_id = db.Column(db.Integer,db.ForeignKey('course.id'))
    #增加关联属性以及反响引用属性
    wife = db.relationship('Wife',backref='teacher',uselist=False)

    def __repr__(self):
        return "<Teacher:%r>" % self.tname

class Wife(db.Model):
    id=db.Column(db.Integer,primary_key=True)
    wname=db.Column(db.String(30))
    wage=db.Column(db.Integer)
    #增加一个列(外键):表示引用自Teacher表的主键
    teacher_id = db.Column(db.Integer,db.ForeignKey('teacher.id'))

    def __init__(self,wname,wage):
        self.wname = wname
        self.wage = wage

    def __repr__(self):
        return "<Wife:%r>" % self.wname
 db.create_all()

猜你喜欢

转载自blog.csdn.net/zhangshuaijun123/article/details/83794501
今日推荐