Flask 如何使用 SQLAlchemy 框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask 如何使用 SQLAlchemy 框架相关的知识,希望对你有一定的参考价值。

step1#配置数据库

simpleBlog/config.py

import os
basedir = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = ‘sqlite:///‘+ os.path.join(basedir, ‘app.db‘)
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, ‘db_repository‘)

WTF_CSRF_ENABLED=True
SECRET_KEY=‘hard to guess string‘

 

 step2#初始化数据库句柄

simpleBlog/app/__init__.py

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy # pip install flask-sqlalchemy

app = Flask(__name__)
app.config.from_object(‘config‘)
db=SQLAlchemy(app)  # init database handler

from app import views

 step3#创建数据库模型

simpleBlog/app/models.py

from app import db

class User(db.Model):
    id=db.Column(db.Integer, primary_key=True)
    nickname=db.Column(db.String(64), index=True, unique=True)
    email=db.Column(db.String(120), index=True,unique=True)
    
    def __repr__(self):
        return ‘<User %r>‘ % (self.nickname)

step4#数据库建造工厂 

from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path

db.create_all()

if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
    api.create(SQLALCHEMY_MIGRATE_REPO,‘database repository‘)
    api.version_control(SQLALCHEMY_DATABASE_URI,SQLALCHEMY_MIGRATE_REPO)
else:
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO))

 step5#运行工厂脚本

技术分享

 

step6#编写migrate脚本

from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path

db.create_all()

if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
    api.create(SQLALCHEMY_MIGRATE_REPO,‘database repository‘)
    api.version_control(SQLALCHEMY_DATABASE_URI,SQLALCHEMY_MIGRATE_REPO)
else:
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO))

 step7#运行db_migrate.py文件

技术分享

step8#玩转shell,与数据库交互

在项目根目录下启动shell,然后导入你的数据库句柄db

技术分享

step9#增加新项到数据库表中,如何实现呢?

传统做法可能是先建好新表然后把原来数据复制过去,或者直接销毁原来的表(不关心丢失原来的数据),然后重建新表。

这些方法都是不符合现实的,复制需要花费大量的时间。销毁的方式非常危险的行为。

因此,下面的脚步轻松解决这些文件。

simpleBlog/db_upgrade.py

from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
print(‘Current database version: ‘ + str(v))

 step10#查看我们的app.db文件里面的当前user结构

技术分享

step11#现在增加一些项到我们的models.User类型里面

class User(db.Model):
    id=db.Column(db.Integer, primary_key=True)
    nickname=db.Column(db.String(64), index=True, unique=True)
    email=db.Column(db.String(120), index=True,unique=True)
    phone=db.Column(db.String(120), index=True)
    age=db.Column(db.Integer)
    
    def __repr__(self):
        return ‘<User %r>‘ % (self.nickname)

 step12#再次执行db_migrate.py 和 db_upgrade.py脚本

step13#查看app.db

技术分享

 

可以发现,数据库表格结构以及发生改变。

原来的数据,新项为空。

接下来添加新项目。

技术分享

step14#接下来是对数据库的数据进行删除

技术分享

以上是关于Flask 如何使用 SQLAlchemy 框架的主要内容,如果未能解决你的问题,请参考以下文章

Flask 框架中 SQLAlchemy 使用时的乱码问题

Flask框架之SQLAlchemy

flask的orm框架----------Flask-SQLAlchemy应用

一周掌握Flask框架学习笔记Flask中使用数据库(使用Flask-SQLAlchemy管理数据库)

学习 Python Flask+Django web 框架 使用Flask-SQLAlchemy管理数据库 遇到的难题

Flask-SQLAlchemy操作