mysql 数据库 更新_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值