Flask使用Sqlite

Flask使用Sqlite

数据库是一个网站的基础,在 Flask中可以自由的使用MySql,sqLite .Redis 、MongDB
来写原生的语句实现功能,也可以使用更高级别的数据库抽象方式,如SQLAlchemy 或 MongoEngine这样的ORM。


  1. 安装flask-sqlalchemy
pip install flask-sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple


from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64), nullable=False)  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空




if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    # 注意:将模型映射到数据库中后,即使改变了模型的字段,也不会再重新映射修改表内容。
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        db.create_all()
        # db.drop_all()

随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:

1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。
2.很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。
3.写SQL时容易忽略web安全问题,给未来造成隐患。

ORM, 全称object Relational Napping ,中文叫做对象关系映射,通过oRA 我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性,oRw在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。使用ORN有许多优点:

1.易用性:使用oRM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。 ⒉.性能损耗小:ORW转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少〈不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显。
3.设计灵活:可以轻松的写出复杂的查询。
4.可移植性: SQLAlchemy封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的Ny5QL,PostgreSQL和 sQLite。可以非常轻松的切换数据库。


添加数据

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    test = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空


# 增
def add_data():
    s = Student(name="major",test="testa",phone="1777777777")
    # 加入session
    db.session.add(s)
    # session提交
    db.session.commit()

# 删

# 改

# 查


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        add_data()

在这里插入图片描述

多对象添加

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空


# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删

# 改

# 查


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        add_data()


在这里插入图片描述

查询所有数据

filter() 按指定条件进行过滤(单表,多表,定值,不定值)

1.查询年龄大于 30 的人的信息
    db.session.query(Users).filter(User.age > 30).all()
 
2.查询id1的人的信息
    db.session.query(Users).filter(Users.id==1).first()
 
3.查询年龄大于30并且id大于1的用户的信息
    filter(条件1,条件2...)
    db.session.query(Users).filter(Users.age > 30, id>1).all()
 
4.查询年龄大于30或者id1的用户的信息
    查询或者操作,需要使用 or_()
    db.session.query(Users).filter(or_(Users.id == 1, Users.age > 30)).all()
 
5.查询 email 中包含 'w' Users的信息--模糊查询
  db.session.query(Users).filter(Users.email.like('%w%'))
 
6.查询 id[2,4] 列表中的Users的信息
  users = db.session.query(Users).filter(Users.id.in_([2, 4])).all()
 
7.查询Users中age在40-50之间的人的信息 between 45 and 50


filter_by() 按等值条件进行过滤

limit() 按限制行数量获取结果

order_by() 按指定列进行排序

group_by() 按指定条件进行分组
from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空

    def __str__(self):
        return "<Person(name:%s,phone:%s)>" %(self.name,self.phone)



# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删

# 改

# 查
def search_data():
    all_stu = db.session.query(Student).all()
    print(all_stu)
    for i in all_stu:
        print(i)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        # add_data()
        # 查询数据
        search_data()


在这里插入图片描述

根据name查询数据

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空

    def __str__(self):
        return "<Person(name:%s,phone:%s)>" %(self.name,self.phone)



# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删

# 改

# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    all_stu = db.session.query(Student).filter_by(name="major").all()
    print(all_stu)
    for i in all_stu:
        print(i)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        # add_data()
        # 查询数据
        search_data()


在这里插入图片描述

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空

    def __str__(self):
        return "<Person(name:%s,phone:%s)>" %(self.name,self.phone)



# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删

# 改

# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    all_stu = db.session.query(Student).filter(Student.name=="major").all()
    print(all_stu)
    for i in all_stu:
        print(i)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        # add_data()
        # 查询数据
        search_data()


在这里插入图片描述

# 根据主键获取对象

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空

    def __str__(self):
        return "<Person(name:%s,phone:%s)>" %(self.name,self.phone)



# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删

# 改

# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # all_stu = db.session.query(Student).filter(Student.name=="major").all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # 根据主键获取对象
    stu = db.session.query(Student).get(2)
    print(stu)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        # add_data()
        # 查询数据
        search_data()


在这里插入图片描述

使用first方法可以获取结果数据中的第一条数据

stu = db.session.query(Student).first()

修改数据

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空

    def __str__(self):
        return "<Person(name:%s,phone:%s)>" %(self.name,self.phone)



# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删

# 改
def update_data():
    stu = db.session.query(Student).first()
    stu.name = "xxxxx"
    db.session.commit()

# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # all_stu = db.session.query(Student).filter(Student.name=="major").all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # 根据主键获取对象
    stu = db.session.query(Student).first()
    print(stu)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        # add_data()
        # 查询数据
        # search_data()
        # 修改数据
         update_data()


在这里插入图片描述

删除数据

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)


# 步骤3:以db.Model为基类创建自己的ORM类
class Student(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "student"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.String(64))  # 学生姓名 nullable能否为空
    phone = db.Column(db.String(11))  # 手机号 可以为空

    def __str__(self):
        return "<Person(name:%s,phone:%s)>" %(self.name,self.phone)



# 增
def add_data():
    s1 = Student(name="major1",phone="1777777777")
    s2 = Student(name="major2",phone="1777777777")
    # 加入session
    db.session.add_all([s1,s2])
    # session提交
    db.session.commit()

# 删
def delete_data():
    stu= db.session.query(Student).first()
    db.session.delete(stu)
    db.session.commit()

# 改
def update_data():
    stu = db.session.query(Student).first()
    stu.name = "xxxxx"
    db.session.commit()

# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # all_stu = db.session.query(Student).filter(Student.name=="major").all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # 根据主键获取对象
    stu = db.session.query(Student).first()
    print(stu)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        # db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        # add_data()
        # 查询数据
        # search_data()
        # 修改数据
        # update_data()
        # 删除数据
        delete_data()



在这里插入图片描述

sqlalchemy常用数据类型:

· Integer :整形。
· Float :浮点类型。
· Boolean:传递True/alse进去。
· DECIMAL:定点类型。
· enum :枚举类型。
. Date :传递datetime.date()进去。
· DateTime :传递datetime.datetime()进去。
· Time :传递datetime.time()进去。
· String :字符类型,使用时需要指定长度,区别于Text 类型。
. Text :文本类型。
. LONGTEXT:长文本类型。

使用Text文本类型存base64图像数据

from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import cv2
import numpy as np
from utils import *
import base64
app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:实例化的数据库
db = SQLAlchemy(app)

def base64_to_opencv(base64_img):
    # 从Base64字符串中提取图像数据
    img_data = base64.b64decode(base64_img)
    # 将图像数据转换为NumPy数组
    np_array = np.fromstring(img_data, np.uint8)
    # 从NumPy数组创建OpenCV图像
    cv_img = cv2.imdecode(np_array, cv2.IMREAD_COLOR)
    return cv_img

# 步骤3:以db.Model为基类创建自己的ORM类
class ImageInfo(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "imageInfo"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.Text)  # 图像名称
    Imgbase64 = db.Column(db.Text)  # 图像base64编码数据

    def __str__(self):
        return "<imageInfo(name:%s)>" %(self.name)



# 增
def add_data():
    cv_img = cv2.imread(r"D:\LSR\20614205011\LSR1.bmp",cv2.IMREAD_COLOR)
    # 转byte流
    ret, buffer = cv2.imencode('.jpg', cv_img)
    # 转base64编码
    img_base64 = base64.b64encode(buffer).decode('utf-8')

    img1 = ImageInfo(name="LS1.bmp",Imgbase64=img_base64)
    img2 = ImageInfo(name="LS2.bmp",Imgbase64=img_base64)
    # 加入session
    db.session.add_all([img1,img2])
    # session提交
    db.session.commit()


# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # all_stu = db.session.query(Student).filter(Student.name=="major").all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # 根据主键获取对象
    img1 = db.session.query(ImageInfo).first()
    cv_img = base64_to_opencv(img1.Imgbase64)
    showImg(cv_img)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        add_data()
        # 查询数据
        search_data()
        # 修改数据
        # update_data()
        # 删除数据
        # delete_data()



重构为项目格式

注意不能循环引用

exts.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

models.py

from exts import db

class ImageInfo(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "imageInfo"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.Text)  # 图像名称
    Imgbase64 = db.Column(db.Text)  # 图像base64编码数据

    def __str__(self):
        return "<imageInfo(name:%s)>" %(self.name)

main.py

from flask import Flask
import cv2
from exts import db
import numpy as np
from utils import *
import base64
app = Flask(__name__)
# 步骤1:配置创建数据库参数
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + r"D:\workplace\python\TestVue\first.db" # 数据库存放位置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "major"

## 步骤2:绑定app
db.init_app(app)

def base64_to_opencv(base64_img):
    # 从Base64字符串中提取图像数据
    img_data = base64.b64decode(base64_img)
    # 将图像数据转换为NumPy数组
    np_array = np.fromstring(img_data, np.uint8)
    # 从NumPy数组创建OpenCV图像
    cv_img = cv2.imdecode(np_array, cv2.IMREAD_COLOR)
    return cv_img

# 步骤3:以db.Model为基类创建自己的ORM类
class ImageInfo(db.Model):
    # 步骤4 确定表名 __tablename__
    __tablename__ = "imageInfo"
    # 步骤5:利用类属性创建表中字段
    id = db.Column(db.Integer, primary_key=True)  # 主键
    name = db.Column(db.Text)  # 图像名称
    Imgbase64 = db.Column(db.Text)  # 图像base64编码数据

    def __str__(self):
        return "<imageInfo(name:%s)>" %(self.name)



# 增
def add_data():
    cv_img = cv2.imread(r"D:\LSR\20614205011\LSR1.bmp",cv2.IMREAD_COLOR)
    # 转byte流
    ret, buffer = cv2.imencode('.jpg', cv_img)
    # 转base64编码
    img_base64 = base64.b64encode(buffer).decode('utf-8')

    img1 = ImageInfo(name="LS1.bmp",Imgbase64=img_base64)
    img2 = ImageInfo(name="LS2.bmp",Imgbase64=img_base64)
    # 加入session
    db.session.add_all([img1,img2])
    # session提交
    db.session.commit()


# 查
def search_data():
    # all_stu = db.session.query(Student).all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # all_stu = db.session.query(Student).filter(Student.name=="major").all()
    # print(all_stu)
    # for i in all_stu:
    #     print(i)
    # 根据主键获取对象
    img1 = db.session.query(ImageInfo).first()
    cv_img = base64_to_opencv(img1.Imgbase64)
    showImg(cv_img)


if __name__ == '__main__':
    # 步骤6:利用db.create_all将ORM模型映射到数据库中
    with app.app_context():  # Create an :class:`~flask.ctx.AppContext`.
        # 建立表
        db.create_all()
        # db.drop_all() # 删除所有表
        # 添加数据
        add_data()
        # 查询数据
        search_data()
        # 修改数据
        # update_data()
        # 删除数据
        # delete_data()



flask-migrate

在实际的开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会直接手动的去修改,而是去修改oRM对应的模型,然后再把模型映射到数据库中。这时候如果有一个工具能专门做这种事情,就显得非常有用了,而flask-migrate用于解决这个问题

pip install flask-migrate -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法提供完整的代码实现。但是,我可以给出一个大致的思路和实现步骤: 1. 安装必要的库和工具: - Python 3.x - Flask - SQLite3 2. 创建数据库: 使用SQLite3创建一个名为student.db的数据库文件,在其中创建两个表:student和dormitory。student表用于存储学生信息,包括学号、姓名、性别、班级和宿舍号;dormitory表用于存储宿舍信息,包括宿舍号、楼层和床位数。 3. 编写程序: - 引入必要的库和工具: ```python from flask import Flask, render_template, request, redirect, url_for, flash import sqlite3 ``` - 创建Flask实例: ```python app = Flask(__name__) app.secret_key = "secret_key" ``` - 定义路由: ```python @app.route("/") def index(): return render_template("index.html") ``` - 编写视图函数: ```python @app.route("/add_student", methods=["POST"]) def add_student(): if request.method == "POST": student_id = request.form["student_id"] name = request.form["name"] gender = request.form["gender"] class_name = request.form["class_name"] dormitory_id = request.form["dormitory_id"] # 将学生信息插入数据库 conn = sqlite3.connect("student.db") c = conn.cursor() c.execute("INSERT INTO student VALUES (?, ?, ?, ?, ?)", (student_id, name, gender, class_name, dormitory_id)) conn.commit() conn.close() flash("添加成功!") return redirect(url_for("index")) ``` - 在HTML页面中添加表单: ```html <form action="{{ url_for('add_student') }}" method="POST"> <label for="student_id">学号:</label> <input type="text" name="student_id" id="student_id"> <br> <label for="name">姓名:</label> <input type="text" name="name" id="name"> <br> <label for="gender">性别:</label> <input type="radio" name="gender" value="男" id="gender">男 <input type="radio" name="gender" value="女" id="gender">女 <br> <label for="class_name">班级:</label> <input type="text" name="class_name" id="class_name"> <br> <label for="dormitory_id">宿舍号:</label> <input type="text" name="dormitory_id" id="dormitory_id"> <br> <input type="submit" value="添加"> </form> ``` 4. 运行程序: 在命令行中输入以下命令启动程序: ```python python app.py ``` 然后在浏览器中访问http://localhost:5000即可使用学生寝室管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值