from  flask import Flask
import  os
from flask_sqlalchemy import SQLAlchemy
import   pymysql
app=Flask(__name__)#__name__当前文件
BASE_DIR=os.path.abspath(os.path.dirname(__file__))#路径abspath绝对路径abspath;dirname目录名dirname,dirname
#BASE_DIR=当前文件的绝对路径 #base基础base;dir目录dir;base_dir基础目录base_dir;base_dir基础目录base_dir
app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://root:root@127.0.0.1:3306/student"
#app.config['SQLALCHEMY_DATABASE_URI']="sqlite:///"+os.path.join(BASE_DIR,"Demo.sqlite")#demo演示demo;数据库指向自带的sqlite数据库
#config配置,布局;config,config配置config#sqlite,django和flask自带的数据库sqlite一个轻量级的数据库sqlite
#databases数据库databases;sqlalchemy功能,关系,外键关联,中进行关联查询sqlalchemy,sqlalchemy
#URI统一资源匹配符;配置数据连接的参数#app.config返回类字典对象,里面用来存放当前app的配置
app.config["SQLALCHEMY_COMMIT_TEARDOWN"]=True#teardown拆卸,待拆房屋,teardown,teardown
#commit把...交托给commit把...交托给commit commit
#sqlalchemy  commit  teardown请求结束后自动提交数据库修改
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=True#track轨道,追踪track,track,track,track,track;
#modifications#修改修饰modifications,modifications;
#如果设置成True(默认情况),flask_SQLALchemy 将会追踪对象的修改并且发送信号
models=SQLAlchemy(app)#关联sqlcchemhy和flask应用
session=models.session()
class  BaseModel(models.Model):#学员表__abstract__=True#抽象表为True,代表当前类为抽象类,不会被实例化id=models.Column(models.Integer,primary_key=True,autoincrement=True)def  save(self):session.add(self)session.commit()def  delete_obj(self):#魔术方法session.delete(self)session.commit()
class  Students(BaseModel):#学员表__tablename="students"name=models.Column(models.String(32))age=models.Column(models.Integer)gender=models.Column(models.Integer)#0,男;1女;2其他
class  Course(BaseModel):#课程表__tablename = "course"label = models.Column(models.String(32))description=models.Column(models.Text)#双向映射# teachers=models.relationship(#     'course',#映射类的名称#双向映射#     backref='teachers'#映射到教师表# )
class  Stu_Cou(BaseModel):#课程表__tablename = "stu_cou"course_id = models.Column(models.Integer, models.ForeignKey("course.id"))student_id = models.Column(models.Integer, models.ForeignKey("students.id"))
class  Grade(BaseModel):#成绩表,课程、学员关联此表__tablename = "grade"id = models.Column(models.Integer, primary_key=True, autoincrement=True)grade=models.Column(models.Float)course_id=models.Column(models.Integer,models.ForeignKey("course.id"))student_id = models.Column(models.Integer, models.ForeignKey("students.id"))
class  Attendance(BaseModel):#考勤表 关联学员__tablename = "attendance"id = models.Column(models.Integer, primary_key=True, autoincrement=True)student_id = models.Column(models.Integer, models.ForeignKey("students.id"))att_time=models.Column(models.Date)status = models.Column(models.Integer,default=1)#0迟到;1正常出勤;2早退;3请假;4旷课
class  Teachers(BaseModel):#教师表__tablename = "teachers"id = models.Column(models.Integer, primary_key=True, autoincrement=True)name = models.Column(models.String(32))age = models.Column(models.Integer)gender = models.Column(models.Integer)  # 0,男;1女;2其他course_id = models.Column(models.Integer, models.ForeignKey("course.id"))
# session=models.session()#创建一个数据库修改实例,增删改
# course=Course(label="python",description="python是世界上最好的语言")
# session.add(course)
# session.commit()#提交保存
#添加数据
# t=Teachers(name="老边",age=24,gender=0,course_id=1)
# t.save()
# t1=Teachers()
# t1.name="老王"
# t1.gender=0
# t1.age=30
# t1.save()
# t=Teachers(name="laoli",age=36,gender=1,course_id=1)
# t.save()
# t1=Teachers()
# t1.name="老王"
# t1.gender=1
# t1.age=45
# t1.save()#修改数据
# t=Teachers.query.get(1)
# t.name="松哥帅"
# t.gender=0
# t.age=18
# t.save()
t=Teachers.query.get(7)
t.name="松哥帅"
t.gender=0
t.age=18
# #删除数据
# t=Teachers.query.get(1)
# t.delete_obj()
# Teachers.query.get(2).delete_obj()
# t=Teachers.query.get(3)
# t.delete_obj()
# Teachers.query.get(4).delete_obj()
# t=Teachers.query.get(5)
# t.delete_obj()
# Teachers.query.get(6).delete_obj()
# #查询数据
# print(Teachers.query.all())
# print(Teachers.query.first())
# print(Teachers.query.filter_by(age=18).all())
# print(Teachers.query.all())
# print(Teachers.query.first())
# print(Teachers.query.filter_by(age=18).all())
# print(Teachers.query.order_by("age").all())#升序
# print(Teachers.query.order_by(models.desc("age")).all())#降序
# print(Teachers.query.get(3))#只能以主键查询
# print(Teachers.query.offset(1).limit(2).all())
print(Teachers.query.offset(1).limit(2).all())
print(Teachers.query.get(3))#只能以主键查询
print(Teachers.query.order_by(models.desc("age")).all())#降序
print(Teachers.query.order_by("age").all())#升序
# #offset偏移量,就是从哪里开始;limit限制条数,就是单次返回条数
# page=2
# page_size=4
# start=(page-1)*page_size
# teachers=Teachers.query.offset(start).limit(page_size).all()
# print(teachers)#模拟分页显示
page=2
page_size=4
start=(page-1)*page_size
teachers=Teachers.query.offset(start).limit(page_size).all()# models.drop_all()
# models.create_all()
# course=Course(label="python",description="世界上最好的语言")
# course.save()
# course=Course(label="php",description="世界上将out的语言")
# course.save()
# course=Course(label="java",description="世界上快out的语言")
# course.save()

flask框架数据库增删改查相关推荐

  1. flask对mysql数据库增删改查_Flask学习(三) - Flask-SQLAlchemy对数据库增删改查

    Flask-SQLAlchemy对数据库增删改查 安装 pip install flask-sqlalchemy 具体不多说了,主要是对数据库进行简单的增删改查,上代码,看注释 @app.route( ...

  2. codeigniter mysql_CI框架(CodeIgniter)实现的数据库增删改查操作总结

    本文实例讲述了CI框架(CodeIgniter)实现的数据库增删改查操作.分享给大家供大家参考,具体如下: controllers下的 cquery.php文件 class CQuery extend ...

  3. 用Python+Mysql+MDUI实现的数据库增删改查列表操作及单,多文件上传实例

    用Python+Mysql+MDUI实现的数据库增删改查列表操作及单,多文件上传实例.web服务用flask框架,数据库操作用的pymysql框架.教程在我B站有的. 开源地址:https://git ...

  4. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  5. IntelliJ Idea SpringBoot 数据库增删改查实例

    . ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \\\\( ( )\___ | '_ | '_| | '_ \/ _` | \\\\ \\/ ___)| | ...

  6. EF框架实现增删改查

           EF框架实现增删改查 1.创建数据库:先创建两张表,文章类型表以及文章详情表,设置主外键(ID,Catelogid) Catelog:文章类型表 字段:Id(自增),Name,[Cont ...

  7. beego原生mysql查询_go——beego的数据库增删改查

    一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...

  8. Mybatis实现简单的数据库增删改查操作

    简介: MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Ma ...

  9. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现

    常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...

最新文章

  1. 『TensorFlow』数据读取类_data.Dataset
  2. C语言--第0次作业
  3. Design Pattern - Mediator(C#)
  4. Linux中查看端口占用情况及结束相应进程
  5. sql中使用“where 1=1 and ....“ 到底影响效率吗,回答不会也永远不会
  6. NSIS打包软件使用
  7. 【Spring-AOP-1】AOP相关概念
  8. 在域环境下搭建samba服务器
  9. 用Android Sutdio调试NDK
  10. python实现k core算法_python实现密度聚类(模板代码+sklearn代码)
  11. 编程语言python入门-编程语言入门(以python为例)
  12. php imagick gif,PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
  13. 漫谈 Clustering (5): Hierarchical Clustering
  14. 手游pvp系统网络设计
  15. 常见量化投资误区合集,量化交易新手脱坑指南 | 邢不行
  16. 悟空CRM系统项目测试
  17. 【Docker 那些事儿】如何安全地停止、删除容器
  18. html5 报表erp案例,SpreadJS 纯前端表格控件应用案例:集成 Odoo 提升企业ERP表格功能...
  19. Python图书管理系统(终章)
  20. 制作双启动(传统BIOS与UEFI均可引导的U盘)

热门文章

  1. 分布式系统原理 之4 Quorum 机制
  2. java中使用Semaphore构建阻塞对象池
  3. HashMap源码解读
  4. java学习笔记十二
  5. Python做数据分析时中文乱码?matplotlib出现中文乱码3行代码解决
  6. Spring之面向切面编程AOP(三)
  7. leetcode--116. 填充每个节点的下一个右侧节点指针
  8. python3 ftp模块_python3利用pyftpdlib模块启动ftp服务
  9. Java文本框只有一行数据,Java只允许输入数目字的文本框
  10. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园