文档章节

mysql数据库更新

o
 osc_x4h57ch8
发布于 2018/04/24 14:28
字数 608
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

在使用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

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Hacker News 简讯 2020-07-10

更新时间: 2020-07-10 01:15 US Supreme Court deems half of Oklahoma a Native American Reservation - (reuters.com) 美国最高法院认为俄克拉荷马州的一半是印第安人保留地 得分:131 | 评...

FalconChen
40分钟前
16
0
OSChina 周五乱弹 —— 求求你吃了我吧,不要再玩弄食物的感情了

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :张喆的单曲《陷阱 》 这首歌已经在网易找不到原唱了,不知道被哪家买了版权。#今日歌曲推荐# 《陷阱 》- 张喆 手机党少年们想听歌...

小小编辑
51分钟前
24
1
清华陈文光教授:AI 超算基准测试的最新探索和实践。

道翰天琼认知智能平台为您揭秘新一代人工智能。 无规矩不成方圆。放在超级计算机的研发领域,没有一个大家普遍接受的算力评测指标,便难以推动超算迅猛发展。 而现在伴随着人工智能的发展,大...

jackli2020
今天
7
0
@RequestMapping, consumes 提交简单有意思的测试

getParm @GetMapping("getParm")public Result getParm(String id){ System.out.println(); return ResultFactory.success(id);} 等同于 == bodyParm @PostMapping("bodyParm......

莫库什勒
今天
25
0
63. Unique Paths II

题目: 63. Unique Paths II A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any p......

JiaMing
今天
55
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部