python开发部署时新增数据库中表的方法
2018-01-01 19:55
281 查看
在项目版本让运维部署时,涉及到数据库表的增加问题,想了一下,可以有四种方法
1.使用SQLAlchemy的db.create_all()方法
2.使用MySQLdb进行新增表
3.使用Flask-Migrate扩展迁移数据库
文件名:migrate_create_table.py
代码写好之后,运行此文件,配合相关命令进行数据库更新
first:通过init命令来创建一个迁移库,执行后会在文件同级目录创建一个migrations文件夹,里面存放了所有迁移脚本。
注意点: 如果需要重新执行此命令,需要删除migrations文件夹,否则报文件夹已经存在错误 alembic.util.exc.CommandError: Directory migrations already exists
secound:通过migrate命令创建自动迁移脚本,此时会在数据库增加一张表(alembic_version),记录migrate更新的版本号
third:通过 upgrade命令更新到数据库中
这时候打开数据库,便可看到新增的表,以及alembic_version表中新增的版本号
注意点:1.在以后数据库迁移更新中,不再需要初始化,所以跳过init命令
2.以上命令是在linux命令窗口中,在pycharm代码编辑软件中为
I.点击 Edit Configurations
II.输入 db **** 等命令
4.直接使用sql语句
类似于第二种,区别在于运维部署多了一个步骤
此四种方法,推荐使用第二种进行新增表,第三种更利于数据库结构的回滚(使用 downgrade命令)。
如果对您有用,请用支付宝扫码领取红包,您的行动,就是我的动力!
1.使用SQLAlchemy的db.create_all()方法
# -*- coding:utf-8 -*- from flask import Flask from flask_sqlalchemy import SQLAlchemy from sqlalchemy.sql import text HOST = '127.0.0.1' USER = "root" PASSWD = "" DB = "carrier_test" CHARTSET = "utf8" app = Flask(__name__,instance_relative_config = True) #链接数据库路径 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://%s:%s@127.0.0.1:3306/%s?charset=%s' %(USER,PASSWD,DB,CHARTSET) #如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True #如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。 app.config['SQLALCHEMY_ECHO'] = False # 数据库连接池的大小。默认是数据库引擎的默认值 (通常是 5)。 app.config['SQLALCHEMY_POOL_SIZE'] = 6 db = SQLAlchemy(app) class Table_one(db.Model): __tablename__ = 'table_one' id = db.Column('id', db.Integer, primary_key=True, autoincrement=True) com_name = db.Column('com_name', db.String(30), nullable=False) com_about = db.Column('com_about', db.String(200), nullable=False) def __repr__(self): return '<table_one com_name %r>' % self.com_name if __name__=='__main__':#创建表 db.create_all()
2.使用MySQLdb进行新增表
import MySQLdb HOST = '127.0.0.1' USER = "root" PASSWD = "" DB = "carrier" CHARTSET = "utf8" db=MySQLdb.connect(HOST,USER,PASSWD,DB) cursor=db.cursor() if __name__ == '__main__': if cursor: command_a = """CREATE TABLE `tea2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL, `na_medf` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;""" cursor.execute(command_a) db.commit() db.close()
3.使用Flask-Migrate扩展迁移数据库
文件名:migrate_create_table.py
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_script import Manager from flask_migrate import Migrate, MigrateCommand #初始化app app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@127.0.0.1:3306/carrier?charset=utf8' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True db = SQLAlchemy(app) #初始化migrate相关 migrate = Migrate(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand) class Tea(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128)) na_medf = db.Column(db.String(128)) if __name__ == '__main__': manager.run()
代码写好之后,运行此文件,配合相关命令进行数据库更新
first:通过init命令来创建一个迁移库,执行后会在文件同级目录创建一个migrations文件夹,里面存放了所有迁移脚本。
注意点: 如果需要重新执行此命令,需要删除migrations文件夹,否则报文件夹已经存在错误 alembic.util.exc.CommandError: Directory migrations already exists
python migrate_create_table.py db init
secound:通过migrate命令创建自动迁移脚本,此时会在数据库增加一张表(alembic_version),记录migrate更新的版本号
python migrate_create_table.py db migrate
third:通过 upgrade命令更新到数据库中
python migrate_create_table.py db upgrade
这时候打开数据库,便可看到新增的表,以及alembic_version表中新增的版本号
注意点:1.在以后数据库迁移更新中,不再需要初始化,所以跳过init命令
2.以上命令是在linux命令窗口中,在pycharm代码编辑软件中为
I.点击 Edit Configurations
II.输入 db **** 等命令
4.直接使用sql语句
类似于第二种,区别在于运维部署多了一个步骤
此四种方法,推荐使用第二种进行新增表,第三种更利于数据库结构的回滚(使用 downgrade命令)。
如果对您有用,请用支付宝扫码领取红包,您的行动,就是我的动力!
相关文章推荐
- python开发部署时新增数据库中表的方法
- python开发部署时新增数据库中表的方法
- mobile开发中用模拟器调试时不需重新部署数据库文件的方法
- Python部署web开发程序的几种方法
- 用三层架构与设计模式思想部署企业级数据库业务系统开发
- 用dw(dreamweaver)开发asp.net,连接数据库时出现“http错误500,服务器内部错误”的解决方法
- java中删除数据库中重复数据的几个方法-Java基础-Java-编程开发
- Delphi 开发数据库控件的方法
- .NET 开发中数据库字段状态绑定到DataGrid的方法(2005-6-15)
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- Visual C# 2008+SQL Server 2005 数据库与网络开发――3.2.3 扩展方法
- [转载]WSPBuilder和QuickPart合作进行Web Partk可视化开发与部署的好方法
- ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载)
- 用三层架构与设计模式思想部署企业级数据库业务系统开发
- 跨越Oracle和MSSQL关系数据库开发 -- 02 Oracle和MSSQL返回结果集区间的方法
- 用三层架构与设计模式思想部署企业级数据库业务系统开发
- [WEB开发][数据库开发/应用]SQL常用命令使用方法
- web开发时读取web.config中的数据库连接字符串的方法
- Visual C# 2008+SQL Server 2005 数据库与网络开发--11.2.3 LINQ的查询和方法
- 征个人开发的“针式背单词”软件的注册方法破解、数据库加密破解