欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-17 10:55:19
...

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:[email protected]: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
相关标签: flask