久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

運用Python快速的對MySQL數據庫進行重命名

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

對數據庫的表進行重命名可以使用以下原生sql:

RENAME TABLE old_table TO new_table;

窘境:但是MySQL并沒有直接支持對數據庫進行重命名

那么如何運用Python快速的對現有的數據庫進行重命名呢?

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

常規(guī)思路

下面的方法步驟較為繁瑣

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

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

python rename_database.py old_db_name new_db_name

我們可以使用表重命名的方法,把表重命名到新的數據庫之下。基本邏輯如下:

創(chuàng)建新數據庫 獲取舊數據庫下所有的表名 把表重命名到新的數據庫名下 刪除舊數據庫

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

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

1.安裝PyMySQL

pip install PyMySQL

2.修改腳本中關于數據庫賬號配置信息部分

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

3.切換到腳本所在目錄,執(zhí)行以下命令即可(數據無價,請先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)建數據庫連接, 數據以字典結構返回 :param is_dict_cursor: 是否返回字典結構的數據 :param database: 默認連接的數據庫 :return: 返回一個連接和一個浮標 ''' 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): ''' 數據庫重命名 :param old_name: 原來的數據庫名 :param new_name: 新數據庫名 :return: 成功返回True, 失敗返回False ''' # 獲取所有的表名 sql = '''SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=%s''' conn, cursor = context() try:conn.begin()# 創(chuàng)建新數據庫名cursor.execute(’create database if not exists {}’.format(new_name))cursor.execute(sql, (old_name, ))results = cursor.fetchall()# 獲取表明,循環(huán)處理放到新的數據庫名下for r in results: tb = r[’TABLE_NAME’] rename_sql = '''RENAME TABLE {}.{} to {}.{}'''.format(old_name, tb, new_name, tb) cursor.execute(rename_sql)# 把舊數據庫刪掉cursor.execute(’drop database {}’.format(old_name)) except Exception as ex:conn.rollback()print('rename_db Exception: {},{}'.format(sql, ex))return False else:# 如果沒有發(fā)生異常,則提交事務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)

以上就是運用Python快速的對MySQL數據庫進行重命名的詳細內容,更多關于python 重命名MySQL數據庫的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美精品一区二区三区四区 | 亚洲男人网 | 一级一级一级一级毛片 | 欧美一区二区三区在线 | 亚洲精品二区 | 久久亚洲一区二区 | 99爱在线观看| 亚洲精色| 亚洲一区二区免费在线观看 | 国产激情视频在线观看 | 亚洲一区二区中文字幕 | 午夜免费电影 | 最新国产中文字幕 | 天天干狠狠干 | 色综合久久久 | 99视频在线免费观看 | 久久久成人av | 精品视频久久 | 国产成人久久精品一区二区三区 | 成人在线观看一区 | 国产高清久久久 | 中文字幕免费观看 | 午夜日韩在线观看 | 品久久久久久久久久96高清 | 亚洲精品国产第一综合99久久 | 91精品综合久久久久久五月天 | 黄色国产在线看 | 三级黄色片在线免费观看 | 91麻豆精品国产91久久久更新时间 | 欧美精品成人 | 亚洲一区 中文字幕 | 亚洲国产精品一区二区三区 | 国产午夜久久久久 | 成人国产在线 | 高清av网站 | 亚洲精品二区 | 日韩欧美三区 | 看片久久| 亚洲精品一区中文字幕乱码 | 成人精品在线视频 | 久久国产精品免费一区二区三区 |