Flask——数据库操作一

一 . Flask数据库搭建

(一)创建app.py文件
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(name)

base_dir = os.path.dirname( #返回指定文件的目录
os.path.abspath(file)
#__file__指当前文件 abspath是绝对路径
)
app.config[“SQLALCHEMY_DATABASE_URI”] = “sqlite:///”+os.path.join(base_dir,“OA.sqlite”)
app.config[“SQLALCHEMY_TRACK_MODIFICATIONS”] = True
db = SQLAlchemy(app)
创建一个OA.sqlite文件

(二)创建models.py文件
class Persion(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(32),unique=True)
password = db.Column(db.String(32))
nickname = db.Column(db.String(32),default="")
age = db.Column(db.Integer)
gender = db.Column(db.String(16),default=“男”)
score = db.Column(db.FLOAT,nullable=True)
创建数据库
#primary_key 主键
#autoincrement 自增长
#unique 唯一
#default 默认值
#nullable 值可以为null
(三)创建views.py视图文件 , main.py启动文件

二. Flask数据库操作

(一)常规操作


  1. #单个插入
    persion = Persion(
    username = “wukong”,
    password = “123456”,
    nickname = “悟空”,
    age = 18,
    gender = “男”,
    score = 92.5
    )
    db.session.add(persion)
    db.session.commit()

#多个插入
persion1 = Persion(
username = “dawa”,
password = “123456”,
nickname = “大娃”,
age = 18,
gender = “男”,
score = 92.5
)
persion2 = Persion(
username = “erwa”,
password = “123456”,
nickname = “二娃”,
age = 18,
gender = “男”,
score = 91.5
)
db.session.add_all([persion1,persion2])
db.session.commit()


  1. 创建一个存有大量员工数据信息的数据库
    #查id为288的员工
    persion = Persion.query.get(288) #自动查询id为288的员工
    print(persion)
    print(persion.username)
    print(persion.nickname)
    #查看所有的员工
    persion_list = Persion.query.all()
    for persion in persion_list:
    print(persion.nickname,persion.gender)
    #查所有男生
    persion_list = Persion.query.filter_by(gender = “男”)
    for persion in persion_list:
    print(persion.nickname,persion.age,persion.gender)
    #查所有年龄大于21岁的男同事
    persion_list = Persion.query.filter(Persion.age >21,Persion.gender==“男”)
    for persion in persion_list:
    print(persion.nickname,persion.age,persion.gender)

#从第二十个开始,查询10位年龄大于21岁的男同事
persion_list = Persion.query.filter(
Persion.age > 21,
Persion.gender==“男”
).limit(10).offset(20)
for persion in persion_list:
print(persion.nickname,persion.age,persion.gender)

#聚合查询
Max Min count sum avg
#查询所有男生的个数
from sqlalchemy import func
#查询所有吴姓男生的个数
result = db.session.query(
func.count(Persion.id)
).filter(Persion.gender == “男”,Persion.nickname.like(“吴%”)).all()
print(result)
#分组查询
#from sqlalchemy import func
##查询男女个数
#result = db.session.query(
Persion.gender,
func.count(Persion.id)
).group_by(Persion.gender).all()
print(result)
#查询年龄个数
result = db.session.query(
Persion.age,
func.count(Persion.id)
).group_by(Persion.age).all()
print(result)
from sqlalchemy import and_
from sqlalchemy import or_
from sqlalchemy import not_

#查询所有吴姓男生
persion_list = Persion.query.filter(
Persion.gender==“男”,
Persion.nickname.like(“吴%”)
)
for persion in persion_list:
print(persion.nickname,persion.age,persion.gender)

#查询所有吴姓同事或者男同事
persion_list = Persion.query.filter(
or_(
Persion.gender==“男”,
Persion.nickname.like(“吴%”)
)
)
for persion in persion_list:
print(persion.nickname,persion.age,persion.gender)

3)改
class Base(db.Model):
abstract = True #作为父类完成被继承,本身不执行
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
def save(self):
db.session.add(self)
db.session.commit()
def delete(self):
db.session.delete(self)
db.session.commit()
def update(self):
db.session.commit()
pos_per = db.Table(
“pos_per”, #表名
db.Column(“pos_id”,db.Integer,db.ForeignKey(“position.id”)),
db.Column(“per_id”, db.Integer, db.ForeignKey(“permission.id”)),
) #中间表必须这样创建

class Position(Base):
#职位表
p_name = db.Column(db.String(32))
p_level = db.Column(db.Integer)
p_permission = db.relationship(
“Permission”, #映射表
secondary = pos_per,#中间表
backref = “p_position” #反向映射字段
)

class Permission(Base):
#权限表
per_name = db.Column(db.String(256))

#插入权限
p_list = [
“查看部门考勤”,
“组织部门会议”,
“招聘员工”,
“开除员工”]
for per in p_list:
p = Permission()
p.per_name = per
p.save()

#插入主任职位
p = Position()
p.p_name = “主任”
p.p_level = 2
p.save()
#给主任添加权限
p = Position.query.get(1)
p.p_permission.append(
Permission.query.get(1) #1号权限
)
p.p_permission.append(
Permission.query.get(2) #2号权限
)
p.save()
#添加经理并添加3个权限
p = Position()
p.p_name = “经理”
p.p_level = 3
p.save()
for i in range(1,4):
p.p_permission.append(
Permission.query.get(i) #1号权限
)
p.save()

#查询权限对应的职位
#查询能够组织会议的职位
#拿到权限
permission = Permission.query.get(2)
print(permission.per_name)
#查看权限对应的所有职位
for position in permission.p_pp_nameosition:
print(position.p_name)

#查询职位对应的权限
#查看经理
position = Position.query.get(2)
print(position.p_name)
#查看经理权限
print(position.p_permission)
for permission in position.p_permission:
print(permission.per_name)

一对多关系
映射
class Position(Base):
p_name = db.Column(db.String(32))
p_level = db.Column(db.Integer)
p_persion = db.relationship(
    "Persion", #映射的类对象
    backref="our_position" #反向映射 给persion表使用的
)

#外键
class Persion(Base):
username = db.Column(db.String(32),unique = True) #登陆名
password = db.Column(db.String(32)) #密码
nickname = db.Column(db.String(32), default="") #姓名
age = db.Column(db.Integer, default=18) #年龄
gender = db.Column(db.String(16), default=“男”) #性别
score = db.Column(db.Float, nullable=True) #绩效
#声明p_position是一个外键整形字段,对应position表的id
p_position =db.Column(db.Integer,db.ForeignKey(“position.id”))

#映射的使用
#查询id 288的员工
persion = Persion.query.get(288)
print(persion.nickname)
print(persion.score)
print(persion.p_position) #输出职位的id
#得到当前员工职位的数据
print(persion.our_position)
print(
persion.nickname,
persion.our_position.p_name,
persion.our_position.p_level
)

#查询公司所有的小组长 2
#查询小组长职位
position = Position.query.get(2)
print(position.p_name)

#查看所有的小组长名字
persion_list = position.p_persion
for persion in persion_list:
print(persion.nickname)

4)删…待补全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
酒店管理系统是一个常见的数据库课程设计项目,它涉及到数据库设计、数据模型、触发器、前后端连接等多个方面。以下是一个简单的介绍: 1. 数据库设计:酒店管理系统的数据库设计是整个项目的基础。它包括定义表、字段、主键、外键等。可以使用E-R图来表示实体和关系,以及流程图和模块图来表示系统的功能和模块。 2. 触发器:触发器是数据库中的一种特殊对象,它可以在特定的数据库操作(如插入、更新、删除)发生时自动执行一些操作。在酒店管理系统中,可以使用触发器来实现一些业务逻辑,例如在预订房间时自动更新房间的状态。 3. Python编程:在酒店管理系统中,可以使用Python编程语言来实现一些功能,例如与数据库的交互、数据处理、界面设计等。同时,还可以使用一些第三方库来简化开发过程,例如Django、Flask等。 4. 前后端连接:酒店管理系统通常包括一个前端界面和一个后端数据库。前端界面用于用户交互和数据展示,后端数据库用于存储和管理数据。可以使用Python的Web框架(如Django)来实现前后端的连接,通过HTTP请求和数据库交互来实现数据的增删改查。 总结起来,酒店管理系统是一个综合性的数据库课程设计项目,涉及到数据库设计、触发器、Python编程和前后端连接等多个方面。通过这个项目,你可以学到数据库设计的基本原理和方法,以及如何使用Python来实现一个完整的应用系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值