在使用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数据库更新的更多相关文章

  1. Python之mysql数据库更新表数据接口实现

    昨天,因为项目需求要添加表的更新接口,来存储预测模型训练的数据. 先码为敬~~~~~~~ # -*- coding: utf-8 -*- import pymysql import settings ...

  2. 【记录】Mysql数据库更新主键自增

    语法:id从1000开始自增: ALTER TABLE 表名 AUTO_INCREMENT = 1000;

  3. Mysql数据库中的计数器表实时更新

    如果某个应用中存在计数器,例如网站的总访问量.用户的粉丝数.文件下载数等等.如果相关应用在Mysql数据库的表中保存计数器,在更新计数器的时候可能会碰到并发问题.例如在web应用中,记录网站的点击次数 ...

  4. python中的MySQL数据库操作 连接 插入 查询 更新 操作

    MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维 ...

  5. python3使用pymysql模块,连接mysql数据库,实现新增、查询和更新操作

    1.环境数据准备: python3环境.pymysql模块 mysql数据库:本次代码中用到的数据库为本地的testdb数据库,user表(表字段比较简单,只有主键id,手机号mobile,密码pas ...

  6. 覆盖Django mysql model中save方法时碰到的一个数据库更新延迟问题

    最近有一个需求,通过django的admin后台,可以人工配置5张表的数据,这些数据进行一些业务规则处理后会统一成一份数据缓存在一个cache之中供服务端业务访问,因而任何一张表的数据更新(增.删.改 ...

  7. MySQL 学习笔记(二):数据库更新、视图和数据控制

    基础准备: 在 school 数据库下建立student.course.sc 三个表: create table student( Sno ) primary key, Sname ) unique, ...

  8. Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存

    一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...

  9. MySQL数据库知识点整理 (持续更新中)

    一.修改用户密码 格式(在命令行下输入):mysqladmin -u 用户名 -p旧密码 password 新密码 1. 给root添加密码ab12:  mysqladmin -uroot -pass ...

随机推荐

  1. HBase中我认为比较常用的两个类:Scan和Filter

    学习HBase一段时间后,我认为HBase中比较常用,同时也是必须掌握的两个API是Scan和Filter.如下是我的理解: 1.Scan  ---- 扫描类 作用:用来对一个指定Table进行按行扫 ...

  2. Google Code Jam 2014 资格赛:Problem D. Deceitful War

    This problem is the hardest problem to understand in this round. If you are new to Code Jam, you sho ...

  3. Google Code Jam 2014 资格赛:Problem B. Cookie Clicker Alpha

    Introduction Cookie Clicker is a Javascript game by Orteil, where players click on a picture of a gi ...

  4. 配置Nginx与tomcat负责均衡集群,

    今天主要说说,nginx如何配置tomcat集群,首先我们先介绍一下各个软件: 一: 1.Nginx介绍: 下载地址:http://nginx.org/en/download.html nginx这个 ...

  5. 安装Struts2 类库

    现在,如果一切正常,那么你可以继续设置您的Struts 2框架.以下是简单的步骤,下载并安装在机器上Struts2. 请选择是否要安装Hibernate在Windows或Unix,然后继续进行下一个步 ...

  6. Cobbler部署之FAQ处理

    Cobbler报错处理 通过cobbler check检查出现的报错 红色标注为报错关键信息 9.1 报错一 # cobbler check httpd does not appear to be r ...

  7. zendstudio的安装和破解

    参考博客地址:http://www.oxox.work/web/php-basic/zendstudio/ 注明:还未验证

  8. apache常用模块介绍

      mod_actions 基于媒体类型或请求方法,为执行CGI脚本而提供 mod_alias 提供从文件系统的不同部分到文档树的映射和URL重定向 mod_asis 发送自己包含HTTP头内容的文件 ...

  9. 第一章 MATLAB数字图像处理编程基础

    1 为什么用MATLAB MATLAB的图像处理工具箱(Image Processing Toolbox,IPT)封装了一系列不同图像处理需求的标准算法,它们都是通过直接或间接调用MATLAB中矩阵运 ...

  10. 九度OJ 1208:10进制 VS 2进制 (进制转换)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2040 解决:612 题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数. ...