Flask数据库操作随笔----flask_sqlalchemy

以下均为个人理解随笔,主要是为了记录学习,写的很随意,如果能给你带来灵感可以参考一下。

一、先说明一下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是不行的,必须这样

下面就是可以愉快的进行数据库的增删该查工作啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值