mysql数据库更新
在使用mysql数据库的时候,A方使用一个版本,B方在使用一个版本数据库进行开发使用,B方在开发的时候,有新的需求,需要添加表字段和所需要的表。但是A方已经在使用之前的版本数据库并且数据库里面有真实的数据,这个时候B方添加的数据如何更新在A方上面,所以写个数据库更新脚本,A方数据库版本与B方更新添加的数据库结构进行对比。添加了哪些字段,哪些表格。
# 在项目根目录下创建一个脚本文件
updata_database.py
from web.settings import DATABASES
import pymysql host = DATABASES["default"]["HOST"]
port = DATABASES["default"]['PORT']
user = DATABASES["default"]['USER']
password = DATABASES["default"]['PASSWORD']
name = DATABASES["default"]["NAME"]
db=pymysql.connect(host= host, port=int(port), user=user, passwd=password, db=name)
cur=db.cursor() sqls=[
"SET FOREIGN_KEY_CHECKS=0",
"alter table info_person_basic add real_estate text", #新添加的字段
"alter table auth_user rename to user_profile_user", #修改表名
"alter table user_profile_user add (bind_addr varchar(30) DEFAULT NULL,last_login_addr varchar(30) DEFAULT NULL)", #新添加的字段
"alter table auth_user_groups rename to user_profile_user_groups", #修改表名
"alter table auth_user_user_permissions rename to user_profile_user_user_permissions", #修改表名
'''
CREATE TABLE `login_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login_status` varchar(50) NOT NULL,
`user_agent` varchar(500) DEFAULT NULL,
`remote_addr` varchar(30) DEFAULT NULL,
`login_date` datetime(6) NOT NULL,
`user_id_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `login_log_user_id_id_2117abc3_fk_user_profile_user_id` (`user_id_id`),
CONSTRAINT `login_log_user_id_id_2117abc3_fk_user_profile_user_id` FOREIGN KEY (`user_id_id`) REFERENCES `user_profile_user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; #创建新的表
''',
'''
CREATE TABLE `schedulers_task` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Task` varchar(200) NOT NULL,
`State` int(11) NOT NULL DEFAULT '1',
`CreateUserId` varchar(200) DEFAULT NULL,
`CreateTime` datetime DEFAULT NULL,
`Args` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
''',
'''
CREATE TABLE `statistics_analyze` (
`key` varchar(200) NOT NULL,
`value` longtext,
PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; #创建新的表
''',
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_uid (`uid`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_id (`person_id`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_name (`person_name`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_sex (`person_sex`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_contact_number #为搜索字段创建索引(`person_contact_number`)",
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_brithday (`person_birthday`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_email (`person_email`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_org_name (`org_name`)", #为搜索字段创建索引
"ALTER TABLE `info_person_basic` ADD INDEX info_person_basic_org_address (`org_address`)", #为搜索字段创建索引
"SET FOREIGN_KEY_CHECKS=1"
] idx = 0
for sql in sqls:
idx += 1
try:
cur.execute(sql)
print "Successfully run sql %d." % idx
except Exception,e:
print "Warning: run sql failed:", str(e) cur.close()
更新脚本文件 updata_database.sh
#备份数据库
mysqldump -uroot -B mysql > update_database.sql
mysql数据库更新的更多相关文章
- Python之mysql数据库更新表数据接口实现
昨天,因为项目需求要添加表的更新接口,来存储预测模型训练的数据. 先码为敬~~~~~~~ # -*- coding: utf-8 -*- import pymysql import settings ...
- 【记录】Mysql数据库更新主键自增
语法:id从1000开始自增: ALTER TABLE 表名 AUTO_INCREMENT = 1000;
- Mysql数据库中的计数器表实时更新
如果某个应用中存在计数器,例如网站的总访问量.用户的粉丝数.文件下载数等等.如果相关应用在Mysql数据库的表中保存计数器,在更新计数器的时候可能会碰到并发问题.例如在web应用中,记录网站的点击次数 ...
- python中的MySQL数据库操作 连接 插入 查询 更新 操作
MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维 ...
- python3使用pymysql模块,连接mysql数据库,实现新增、查询和更新操作
1.环境数据准备: python3环境.pymysql模块 mysql数据库:本次代码中用到的数据库为本地的testdb数据库,user表(表字段比较简单,只有主键id,手机号mobile,密码pas ...
- 覆盖Django mysql model中save方法时碰到的一个数据库更新延迟问题
最近有一个需求,通过django的admin后台,可以人工配置5张表的数据,这些数据进行一些业务规则处理后会统一成一份数据缓存在一个cache之中供服务端业务访问,因而任何一张表的数据更新(增.删.改 ...
- MySQL 学习笔记(二):数据库更新、视图和数据控制
基础准备: 在 school 数据库下建立student.course.sc 三个表: create table student( Sno ) primary key, Sname ) unique, ...
- Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...
- MySQL数据库知识点整理 (持续更新中)
一.修改用户密码 格式(在命令行下输入):mysqladmin -u 用户名 -p旧密码 password 新密码 1. 给root添加密码ab12: mysqladmin -uroot -pass ...
随机推荐
- UIview层次管理
将一个UIView显示在最前面只需要调用其父视图的 bringSubviewToFront()方法. 将一个UIView层推送到背后只需要调用其父视图的 sendSubviewToBack()方法.
- ASP.NET动态网站制作(21)-- C#(4)
前言:这节课是C#讲解的第四节课,主要围绕面向对象的三大特性展开.上节课已经把封装讲完了,这节课讲继承和多态. 内容: 1.继承:写程序的时候有些信息是公共的,可以将这些公共的信息写在父类里,增强代码 ...
- kafka的并行度与JStorm性能优化
kafka的并行度与JStorm性能优化 > Consumers Messaging traditionally has two models: queuing and publish-subs ...
- iPhone缓存网络数据
本文转载至 http://blog.csdn.net/wwang196988/article/details/7542918 在iPhone应用程序中,我们经常要用去网络下载一些文件,比如xml, ...
- EasyNVR、EasyDSS二次开发之:RTMP、HLS流在web页面进行无插件播放示例Demo代码
不管是基于EasyNVR还是EasyDSS,都是支持无插件直播,这也是未来视频直播的一个趋势.对于传统的浏览器插件播放谁用谁知道: 以上是软件自带播放展示 背景需求 对于EasyNVR和EasyDSS ...
- Angular中的$cacheFactory的作用和用法
1.Angular中的$cacheFactory的作用: (1)put(key,value); 在缓存对象中插入一个键值对(key,value). (2)get(key); 在缓存对象中通过指定 ...
- 【python】-- 文件操作
一.概述 我们工作中需要经常操作文件,下面就讲讲如何用Python操作文件 1.文件操作的流程: 打开文件,得到文件句柄赋值给一个变量 通过文件句柄,对文件进行操作 关闭文件 #获取文件句柄 f = ...
- VS2017下编译iconv
从http://www.gnu.org/software/libiconv/ 下载 libiconv-1.11.1, 这是最后一个支持MSVC编译的版本. 打开 Visual Studio 2017 ...
- Android系统移植与调试之------->MTK 标准编译命令
命令格式:./maketek [option] [project] [action] [modules]Option: -t ,-tee :输出log信息到当前终端 -o , -opt=-- ...
- make编译一
在C和C++中,首先要把源文件编译成中间代码文件,在windows下就是obj文件,linux下就是.o文件:object file.这个动作叫做编译,然后再把大量的object file合成执行文件 ...