码迷,mamicode.com
首页 > 数据库 > 详细

Flask 如何使用 SQLAlchemy 框架

时间:2016-03-12 14:34:50      阅读:693      评论:0      收藏:0      [点我收藏+]

标签:

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 框架

标签:

原文地址:http://www.cnblogs.com/landpack/p/5268516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!