说到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语句操作
原文地址:https://www.cnblogs.com/ssjz12/p/10181615.html