以下均为个人理解随笔,主要是为了记录学习,写的很随意,如果能给你带来灵感可以参考一下。
一、先说明一下flask_sqlalchemy
提到flask_sqlalchemy,就要先讲一下SQLALchemy是啥, SQLALchemy实际上是对数据库的抽象,开发者不用直接和 数据库的SQL 语句打交道,而是通过 Python 的对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升,虽然是有性能开销,但是这个损耗可以忽略不计。
SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。而这个 flask-sqlalchemy 就是一个简化了 SQLAlchemy 操作的flask扩展。
二、先写一个最简单的概念原理
1.给app.py的代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
# 实例一个SQLAlchemy对象db
db = SQLAlchemy()
app = Flask(__name__)
# config里是数据库的配置信息
app.config.from_object(config)
# 将db注册到app中,也就是将db与app进行绑定
db.init_app(app)
if __name__ == '__main__':
app.run()
2.config.py的代码
DIALECT = 'mysql'
DRIVER = 'mysqlconnector'
USERNAME = 'root'
PASSWORD = 'root'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask'
# SQLALCHEMY_DATABASE_URI--连接数据库制指定变量
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
# 这行代码防止报错(不影响的报错)
SQLALCHEMY_TRACK_MODIFICATIONS = False
3.有了这些就可以做连接数据库、增删改查操作了
三、记录一下自己的应用实例
1.先贴上用的到的目录
然后贴代码
app.py
from gather import create_app
from gather.utils.exts import db
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
# 创建flask应用对象
app = create_app("develop")
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command("db", MigrateCommand)
if __name__ == '__main__':
manager.run()
config.py
class config_basic(object):
"""基本配置信息"""
# 数据库配置
DIALECT = 'mysql'
DRIVER = 'mysqlconnector'
USERNAME = 'root'
PASSWORD = 'root'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask'
# SQLALCHEMY_DATABASE_URI--连接数据库制指定变量
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
# 这行代码防止报错(不影响的报错)
SQLALCHEMY_TRACK_MODIFICATIONS = False
class config_development(config_basic):
"""开发模式的配置信息"""
# debug模式
DEBUG = True
class config_production(config_basic):
"""生产环境配置信息"""
pass
# 映射类
config_map = {
"develop": config_development,
"product": config_production
}
exts.py
# 解决循环引用问题
# 导入SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
# 创建一个SQLAlchemy,并对SQLAlchemy进行初始化,SQLAlchemy初始化必须与app进行绑定
db = SQLAlchemy()
models.py
from gather.utils.exts import db
# 创建用户登陆Users模型
class Users(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(30), nullable=False)
email = db.Column(db.String(30), nullable=False)
password = db.Column(db.String(30), nullable=False)
__init__.py
from flask import Flask
from config import config_map
from gather.utils.exts import db
from gather.utils.models import Users
# 工厂模式
def create_app(config_name):
"""
创建flask应用对象
:param config_name: str 配置模式的名字 ("develop", "product")
:return: flask应用对象
"""
app = Flask(__name__)
# 根据配置模式的名字获取配置参数的类
config_class = config_map.get(config_name)
app.config.from_object(config_class)
# 使用app初始化db
db.init_app(app)
return app
最重要的就是这个create_table.py
from gather import create_app
from gather.utils.exts import db
# 这几行代码的大概意思就是,首先启动app,在app里使用db.create_all()
app = create_app("develop")
with app.app_context():
db.create_all()
下面是食用方法,直接run是不行的,必须这样
下面就是可以愉快的进行数据库的增删该查工作啦