"""配置参数"""
# sqlalchemy的配置参数
SQLALCHEMY_DATABASE_URI = "mysql://root:密码@127.0.0.1:3306/数据库名"
# 设置sqlalchemy自动跟踪数据库中数据的修改 (修改数据库数据后,对应的模型类对象会自动修改)(添加对象时,自动返回id给对象)
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config.from_object(Config) # 通过类对象加载配置参数
# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)
# 模型类 (继承db.Model)
class Role(db.Model):
"""用户角色表"""
__tablename__ = "tbl_roles"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32), unique=True)
users = db.relationship("User", backref="role") # 关联属性。关联的所有用户 (一对多)
# backref="role" 表示会在User模型类中自动创建关联属性role。
def __repr__(self):
"""定义之后,可以让显示对象的时候更直观"""
return "Role object: name=%s" % self.name
# 表名的常见规范
# ihome -> ih_user 数据库名缩写_表名
# tbl_user tbl_表名
# 数据库模型类
class User(db.Model):
"""用户表"""
__tablename__ = "tbl_users" # 指明对应的数据库表名
id = db.Column(db.Integer, primary_key=True) # 整型的主键,会默认设置为自增主键
name = db.Column(db.String(64), unique=True)
email = db.Column(db.String(128), unique=True)
password = db.Column(db.String(128))
role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id")) # 外键 (一对多)
def __repr__(self):
return "User object: name=%s" % self.name
demo2.py(关联查询):
from demo import Role, User # 导入模型类
role1 = Role.query.get(1)
user_list = role1.users # 通过关联属性users获取关联的用户。
user1 = User.query.get(1)
role2 = user1.role # 通过关联属性role获取关联的角色。
user1 = User.query.get(1)
role3 = Role.query.get(user1.role_id) # 通过外键role_id查询关联的角色。
demo.py(定义模型类,一对多关联):# coding:utf-8from flask import Flaskfrom flask_sqlalchemy import SQLAlchemy # 导入app = Flask(__name__)# 通过类对象加载配置。 (配置数据库)class Config(object): """配置参数""" ...
内容概要:
本文通篇围绕Flask框架中的数据库操作展开,系统而详细地介绍了数据库查询的必要性、Flask进行数据库操作的方法以及在不同场景下的具体应用,内容涵盖数据库操作的整个过程。文中既有通俗易懂的概念解析,也有可供工程参考的代码示例,全面而细致地讲解了Flask数据库操作的方方面面。
适合人群:
本文既适合Flask和Python开发的初学者从零开始学习数据库操作,也适合想要 Refresh 和参考Flask数据库访问代码的爱好者。掌握数据库操作是Web开发的基础。
能学到什么:
通过学习可以掌握在Flask中进行数据库连接、定义模型、各种查询以及增删改查操作的方法。不仅能学会数据库访问接口的使用,也能根据实际Web系统需求进行数据库设计和操作。
阅读建议:
建议按照数据库查询过程的自然流程学习,先了解基础的数据库连接和模型定义,然后学习各种数据库访问方法,最后结合用户、博客、商城等具体场景的代码实例,将知识应用到实际编码中,逐步掌握Flask数据库操作的技能。
SQLAlchemy
SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在DB API之上,使用关系对象映加粗样式射进行数据库操作,简单地说就是:将类和对象转换成SQL,然后使用数据API执行并获取执行结果。
今天要说的就是 flask_SQLALchemy之多表查询
1.join查询
先假设一个需求,知道一个用户的学习成绩,要查询这个学习成绩所属的用户,第一个办法就是连接多个...
创建一个数据库
docker创建mysql
$ docker run --name first-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql:5.7.22
windows创建mysql
创建并初始化一个库
连接数据库
创建一个数据库mysqltest
创建一个表
添加一个user表
查询并可以添加数据库信息的脚本
import pymysql
def get
使用Flask-SQLAlchemy管理数据库
Flask-SQLAlchemy是一个Flask扩展,它简化了在Flask应用程序中对SQLAlchemy的使用。SQLAlchemy是一个强大的关系数据库框架,支持一些数据库后端。提供高级的ORM和底层访问数据库的本地SQL功能。
和其他扩展一样,通过pip安装Flask-SQLAlchemy:
(venv) $ pip install flask-sqlalchemy
在Flask-SQLAlchemy,数据库被指定为URL。表格列出三个最受欢迎的数据库引擎url的格式:
在这些URL中,hostname是指托管MySQL服务的服务
from flask import Flask, render_template,request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__,static_url_path='')
app.debug = True
app.secret_key = "faefasdfaf"
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlit
到目前为止,Flask集成ORM扩展到基本操作,已经算是接近尾声了,上一章节已经将单表数据的增删改查,做了十分详细的讲解,并且从Flask应用的日志中可以看出每个ORM操作对应的数据库SQL语句,能够更为清晰的看到程序模型到数据库之间的映射关系,让大家可以对MySQL有一个基本的了解。
但几乎所有的后端应用都不可能只存在单独的一张数据表,大多数情况下都是存在多张数据表,并且这些数据表之间都存在关联,可能是一对一,或者一对多,等等。那么今天这一章节我们就着重讲解一下如何使用Flask-SQLAlchemy进
那么我们怎么从数据库中查询数据?为此,Flask-SQLAlchemy 在您的Model类上提供了query属性。当您访问它时,您会得到一个新的所有记录的查询对象。在使用all()或者first()发起查询之前可以使用方法filter()来过滤记录。如果您想要用主键查询的话,也可以使用get()。
一、查询 示例
1、查询所有:
模型类.query.all() 等价于 select * from user;
2、有条件的查询:
1)模型类.query...