flask框架数据库增删改查
生活随笔
收集整理的這篇文章主要介紹了
flask框架数据库增删改查
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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統(tǒng)一資源匹配符;配置數據連接的參數#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 將會追蹤對象的修改并且發(fā)送信號
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()#創(chuàng)建一個數據庫修改實例,增刪改
# 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框架数据库增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django完整配置settings.p
- 下一篇: flask框架创建数据库定义字段类型和字