电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

運(yùn)用Python快速的對(duì)MySQL數(shù)據(jù)庫進(jìn)行重命名

瀏覽:5日期:2022-06-17 11:24:39
目錄常規(guī)思路更快捷的方法使用方法

對(duì)數(shù)據(jù)庫的表進(jìn)行重命名可以使用以下原生sql:

RENAME TABLE old_table TO new_table;

窘境:但是MySQL并沒有直接支持對(duì)數(shù)據(jù)庫進(jìn)行重命名

那么如何運(yùn)用Python快速的對(duì)現(xiàn)有的數(shù)據(jù)庫進(jìn)行重命名呢?

比如項(xiàng)目初期,對(duì)數(shù)據(jù)庫的命名(db_ridingroad)沒有規(guī)劃好,然后在下面創(chuàng)建了大量的表和寫入了大量的數(shù)據(jù),現(xiàn)在需要對(duì)數(shù)據(jù)庫的名字進(jìn)行重命名為(db_news_website)

常規(guī)思路

下面的方法步驟較為繁瑣

-- 數(shù)據(jù)庫備份mysqldump ?u [UserName] ?p[Password] ?R [DB_Name] > [DB_Name].sql-- 創(chuàng)建新數(shù)據(jù)庫create database [New_DB_Name];-- 把備份的數(shù)據(jù)導(dǎo)入到新數(shù)據(jù)庫mysql ?u [UserName] ?p[Password] [New_DB_Name] < [DB_Name].sql-- 刪除舊數(shù)據(jù)庫drop database [DB_Name];更快捷的方法

只需要執(zhí)行下面這條命令即可

python rename_database.py old_db_name new_db_name

我們可以使用表重命名的方法,把表重命名到新的數(shù)據(jù)庫之下?;具壿嬋缦拢?/p> 創(chuàng)建新數(shù)據(jù)庫 獲取舊數(shù)據(jù)庫下所有的表名 把表重命名到新的數(shù)據(jù)庫名下 刪除舊數(shù)據(jù)庫

下面使用Python代碼去實(shí)現(xiàn),主要代碼(完整代碼見文末):

def rename_db(old_name, new_name): ''' 數(shù)據(jù)庫重命名 :param old_name: 原來的數(shù)據(jù)庫名 :param new_name: 新數(shù)據(jù)庫名 :return: 成功返回True, 失敗返回False ''' # 獲取所有的表名 sql = '''SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=%s''' conn, cursor = context() try:# 創(chuàng)建新數(shù)據(jù)庫名cursor.execute(’create database if not exists {}’.format(new_name))cursor.execute(sql, (old_name, ))results = cursor.fetchall()# 獲取表明,循環(huán)處理放到新的數(shù)據(jù)庫名下for r in results: tb = r[’TABLE_NAME’] rename_sql = '''RENAME TABLE {}.{} to {}.{}'''.format(old_name, tb, new_name, tb) cursor.execute(rename_sql)# 把舊數(shù)據(jù)庫刪掉cursor.execute(’drop database {}’.format(old_name)) except Exception as ex:conn.rollback()print('rename_db Exception: {},{}'.format(sql, ex))return False else:# 如果沒有發(fā)生異常,則提交事務(wù)conn.commit() finally:conn.close() return True使用方法

1.安裝PyMySQL

pip install PyMySQL

2.修改腳本中關(guān)于數(shù)據(jù)庫賬號(hào)配置信息部分

MYSQL_HOST = ’127.0.0.1’MYSQL_PORT = 3306MYSQL_USER = ’ridingroad’MYSQL_PASSWORD = ’xxxxyyyy’MYSQL_DATABASE = ’db_ridingroad’

3.切換到腳本所在目錄,執(zhí)行以下命令即可(數(shù)據(jù)無價(jià),請先mysqldump備份)

python rename_database.py old_db_name new_db_name

完整代碼如下:

import sysimport pymysqlMYSQL_HOST = ’127.0.0.1’MYSQL_PORT = 3306MYSQL_USER = ’ridingroad’MYSQL_PASSWORD = ’xxxxyyyy’MYSQL_DATABASE = ’db_ridingroad’MYSQL_CHARSET = ’utf8’def context(is_dict_cursor=True, database=MYSQL_DATABASE): ''' 創(chuàng)建數(shù)據(jù)庫連接, 數(shù)據(jù)以字典結(jié)構(gòu)返回 :param is_dict_cursor: 是否返回字典結(jié)構(gòu)的數(shù)據(jù) :param database: 默認(rèn)連接的數(shù)據(jù)庫 :return: 返回一個(gè)連接和一個(gè)浮標(biāo) ''' try:config = { ’host’: MYSQL_HOST, ’port’: MYSQL_PORT, ’user’: MYSQL_USER, ’password’: MYSQL_PASSWORD, ’database’: database, ’charset’: MYSQL_CHARSET,}conn = pymysql.connect(**config)if is_dict_cursor: cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)else: cursor = conn.cursor()return conn, cursor except Exception as ex:print('connect database failed, {},{}'.format(400, ex))raise Exception({’code’: 400, ’msg’: ex})def rename_db(old_name, new_name): ''' 數(shù)據(jù)庫重命名 :param old_name: 原來的數(shù)據(jù)庫名 :param new_name: 新數(shù)據(jù)庫名 :return: 成功返回True, 失敗返回False ''' # 獲取所有的表名 sql = '''SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=%s''' conn, cursor = context() try:conn.begin()# 創(chuàng)建新數(shù)據(jù)庫名cursor.execute(’create database if not exists {}’.format(new_name))cursor.execute(sql, (old_name, ))results = cursor.fetchall()# 獲取表明,循環(huán)處理放到新的數(shù)據(jù)庫名下for r in results: tb = r[’TABLE_NAME’] rename_sql = '''RENAME TABLE {}.{} to {}.{}'''.format(old_name, tb, new_name, tb) cursor.execute(rename_sql)# 把舊數(shù)據(jù)庫刪掉cursor.execute(’drop database {}’.format(old_name)) except Exception as ex:conn.rollback()print('rename_db Exception: {},{}'.format(sql, ex))return False else:# 如果沒有發(fā)生異常,則提交事務(wù)conn.commit() finally:conn.close() return Trueif __name__ == ’__main__’: old_db = sys.argv[1] new_db = sys.argv[2] rename_db(old_name=old_db, new_name=new_db)

以上就是運(yùn)用Python快速的對(duì)MySQL數(shù)據(jù)庫進(jìn)行重命名的詳細(xì)內(nèi)容,更多關(guān)于python 重命名MySQL數(shù)據(jù)庫的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 手板_手板模型制作_cnc手板加工厂-东莞天泓| 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 慈溪麦田广告公司,提供慈溪广告设计。 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 浙江美尔凯特智能厨卫股份有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | 学习虾-免费的学习资料下载平台| 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 武汉宣传片制作-视频拍摄-企业宣传片公司-武汉红年影视 | 爆炸冲击传感器-无线遥测传感器-航天星百科 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 |