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#接下来是对数据库的数据进行删除
时间: 2024-10-11 05:33:57