flask 數據庫操作


 

說到flask中操作數據庫首先要先引入一個概念:ORM

ORM 全拼Object-Relation Mapping.

中文意為 對象-關系映射

其實它就是模型對象的概念,把數據庫的信息映射成一個個對象來操作,

而不需要編寫sql語句,簡單來說就是面向對象編程的概念。

flask 中的SQLAlchemy 就是一個ORM框架,它依賴於pymysql,使用關系對象映射對數據庫進行操作

SQLAlchemy 的安裝命令:

pip install flask-sqlalchemy

 

下面就用代碼展示使用SQLAlchemy對數據庫進行增刪改查的操作:

 

# -*- encoding: utf-8 -*-

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
#導入時間模塊
import datetime,time

#建立對象
app = Flask(__name__)

#建立數據庫對象
db = SQLAlchemy(app)

#導入配置文件
app.config.from_pyfile('config.ini')



#建立數據庫類

class Student(db.Model):
#聲明表名
__tablename__ = 'student'
#id字段
id = db.Column(db.Integer,primary_key=True)
#name字段
name = db.Column(db.String
#password字段
password = db.Column(db.String)

#日期時間字段
shijian = db.Column(db.DateTime)

#日期
date = db.Column(db.Time)

#性別
gender = db.Column(db.Enum)

#身高
height = db.Column(db.DECIMAL)

#文本
con = db.Column(db.Text)

#時間
time = db.Column(db.Time)

@app.route('/')
def index():
#將對象屬性賦值入庫
#將當前的生日期時間格式化為mysql的日期時間格式
student = Student(

shijian = datetime.datetime.now(),
#格式化日期,把時間去掉,只留日期
date = datetime.datetime.now().strftime("%Y-%m-%d"),
#只取時間需要導入time模塊,格式化時間
time = time.strftime('%H:%M:%S')
 
)
#調用入庫方法
db.session.add(student)
return '入庫操作'

#數據庫的刪除操作
@app.route('/del')
def delt():
#刪除根據某個字段做刪除,filter_by可以理解為where條件限定
#翻譯為 delete from Student where id = 1
Student.query.filter_by(id=3).delete()
return '這里是刪除操作'

#數據庫的修改操作
@app.route('/edit')
def edit_user():
#根據某個字段做修改操作
#翻譯為 update student set name = ‘張三’ where id= 2
Student.query.filter_by(id=4).update({'name':'張三'})
return '這里是修改操作'
 
#數據庫的查詢操作
@app.route('/select')
def select_user():
#簡單的全量查詢
#翻譯為 select * from student
# ulist = student.query.all()
# print(ulist)
# for item in ulist:
# print(item.name)

#只取一條,沒有last取值方法
#翻譯為select * from user limit 1
ulist = User.query.first()
print(ulist)
 

if __name__ == "__main__":
app.run()
 
當然 SQLAlchemy這種對數據庫的操作方法也有弊端,可能有些人也不習慣用,
也可以用原生的sql語句對數據庫進行操作。如:
items = db.session.execute('select * from student order by id')
#將結果集強轉為;list
items = list(items)
print(items)
其中的execute方法是依賴於pymysql進行執行操作的,所以也可以使用原生sql語句操作

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM