flask框架数据库增删改查
生活随笔
收集整理的這篇文章主要介紹了
flask框架数据库增删改查
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
from flask import Flask
import os
from flask_sqlalchemy import SQLAlchemy
import pymysql
app=Flask(__name__)#__name__當(dāng)前文件
BASE_DIR=os.path.abspath(os.path.dirname(__file__))#路徑abspath絕對(duì)路徑abspath;dirname目錄名dirname,dirname
#BASE_DIR=當(dāng)前文件的絕對(duì)路徑 #base基礎(chǔ)base;dir目錄dir;base_dir基礎(chǔ)目錄base_dir;base_dir基礎(chǔ)目錄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;數(shù)據(jù)庫(kù)指向自帶的sqlite數(shù)據(jù)庫(kù)
#config配置,布局;config,config配置config#sqlite,django和flask自帶的數(shù)據(jù)庫(kù)sqlite一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù)sqlite
#databases數(shù)據(jù)庫(kù)databases;sqlalchemy功能,關(guān)系,外鍵關(guān)聯(lián),中進(jìn)行關(guān)聯(lián)查詢sqlalchemy,sqlalchemy
#URI統(tǒng)一資源匹配符;配置數(shù)據(jù)連接的參數(shù)#app.config返回類字典對(duì)象,里面用來(lái)存放當(dāng)前app的配置
app.config["SQLALCHEMY_COMMIT_TEARDOWN"]=True#teardown拆卸,待拆房屋,teardown,teardown
#commit把...交托給commit把...交托給commit commit
#sqlalchemy commit teardown請(qǐng)求結(jié)束后自動(dòng)提交數(shù)據(jù)庫(kù)修改
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=True#track軌道,追蹤track,track,track,track,track;
#modifications#修改修飾modifications,modifications;
#如果設(shè)置成True(默認(rèn)情況),flask_SQLALchemy 將會(huì)追蹤對(duì)象的修改并且發(fā)送信號(hào)
models=SQLAlchemy(app)#關(guān)聯(lián)sqlcchemhy和flask應(yīng)用
session=models.session()
class BaseModel(models.Model):#學(xué)員表__abstract__=True#抽象表為True,代表當(dāng)前類為抽象類,不會(huì)被實(shí)例化id=models.Column(models.Integer,primary_key=True,autoincrement=True)def save(self):session.add(self)session.commit()def delete_obj(self):#魔術(shù)方法session.delete(self)session.commit()
class Students(BaseModel):#學(xué)員表__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):#成績(jī)表,課程、學(xué)員關(guān)聯(lián)此表__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):#考勤表 關(guān)聯(lián)學(xué)員__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請(qǐng)假;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)建一個(gè)數(shù)據(jù)庫(kù)修改實(shí)例,增刪改
# course=Course(label="python",description="python是世界上最好的語(yǔ)言")
# session.add(course)
# session.commit()#提交保存
#添加數(shù)據(jù)
# 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()#修改數(shù)據(jù)
# 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
# #刪除數(shù)據(jù)
# 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()
# #查詢數(shù)據(jù)
# 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限制條數(shù),就是單次返回條數(shù)
# page=2
# page_size=4
# start=(page-1)*page_size
# teachers=Teachers.query.offset(start).limit(page_size).all()
# print(teachers)#模擬分頁(yè)顯示
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="世界上最好的語(yǔ)言")
# course.save()
# course=Course(label="php",description="世界上將out的語(yǔ)言")
# course.save()
# course=Course(label="java",description="世界上快out的語(yǔ)言")
# course.save()
總結(jié)
以上是生活随笔為你收集整理的flask框架数据库增删改查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Django完整配置settings.p
- 下一篇: flask框架创建数据库定义字段类型和字