前言
SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。
它提供了SQL工具包和ORM(对象关系映射)工具,类似于Django 自带的 ORM 框架操作数据库。
创建模型
先创建模型
from flask import Flask, url_for, request, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 设置数据库连接地址
DB_URI = 'mysql+pymysql://root:[email protected]:3306/web'
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
# 是否追踪数据库修改,一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True
# 初始化db,关联flask 项目
db = SQLAlchemy(app)
# 创建模型
class Students(db.Model):
__tablename__ = 'students' # 数据库表名
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
fullname = db.Column(db.String(30))
nickname = db.Column(db.String(30))
def __repr__(self):
return "<Students(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
if __name__ == '__main__':
# 创建表
db.create_all()
app.run(debug=True)
新增数据
往表里面添加数据db.session.add()
@app.route('/demo', methods=["GET"])
def demo():
# 实例化 Students 模型对象
user = Students(name='yy', fullname='yoyo')
# 添加到会话,并用commit提交数据
db.session.add(user)
db.session.commit()
return {
"code": 0,
"msg": "create success!"
}
访问接口地址http://127.0.0.1:5000/demo
,数据库就会有新增数据
一次添加多个数据,用db.session.add_all()
@app.route('/demo', methods=["GET"])
def demo():
# 实例化 Students 模型对象
user1 = Students(name='yy1', fullname='yoyo1')
user2 = Students(name='yy2', fullname='yoyo2')
user3 = Students(name='yy3', fullname='yoyo3')
# 添加到会话,并用commit提交数据
# db.session.add(user)
db.session.add_all([user1, user2, user3])
db.session.commit()
return {
"code": 0,
"msg": "create success!"
}
query 查询数据
查询表的全部数据
Students.query.all()
查询示例
@app.route('/demo', methods=["GET"])
def demo():
# 返回列表
all = Students.query.all()
print(all)
return {
"code": 0,
"msg": "success"
}
查询结果返回一个对象列表
[<Students(name='yy', fullname='yoyo', nickname='None')>, <Students(name='yy1', fullname='yoyo1', nickname='None')>]
查询第一个结果
Students.query.first()
get()方法可以直接通过id查询
Students.query.get(1)
如果没有查询到结果返回None, 这一点处理的比较好
支持filter() 和 filter_by() 查询
Students.query.filter(Students.name == 'yy').all()
Students.query.filter_by(name='yy').all()
关于filter() 和 filter_by()的区别可以看前面这篇https://www.cnblogs.com/yoyoketang/p/16487628.html
标签:__,SQLAlchemy,14,Flask,app,db,Students,session,name From: https://www.cnblogs.com/yoyoketang/p/16617172.html