最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年06月07日 10:58:25   作者:一擼程猿  
本文介紹了如何運(yùn)用Python快速的對現(xiàn)有的數(shù)據(jù)庫進(jìn)行重命名,有此需求的朋友可以參考下

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

RENAME TABLE old_table TO new_table;  

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

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

比如項(xiàng)目初期,對數(shù)據(jù)庫的命名(db_ridingroad)沒有規(guī)劃好,
然后在下面創(chuàng)建了大量的表和寫入了大量的數(shù)據(jù),現(xiàn)在需要對數(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ù)庫之下。基本邏輯如下:

  1. 創(chuàng)建新數(shù)據(jù)庫
  2. 獲取舊數(shù)據(jù)庫下所有的表名
  3. 把表重命名到新的數(shù)據(jù)庫名下
  4. 刪除舊數(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ù)庫賬號配置信息部分

MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_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 sys
import pymysql


MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_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 True


if __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快速的對MySQL數(shù)據(jù)庫進(jìn)行重命名的詳細(xì)內(nèi)容,更多關(guān)于python 重命名MySQL數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死)

    pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死)

    這篇文章主要介紹了pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Pytorch相關(guān)知識介紹與應(yīng)用

    Pytorch相關(guān)知識介紹與應(yīng)用

    最近又重拾了機(jī)器學(xué)習(xí)的相關(guān)技術(shù),在本科畢設(shè)的階段下學(xué)習(xí)使用了Tensorflow 2.x工具,當(dāng)時(shí)也是不求甚解,直接拿來用了,但現(xiàn)在已經(jīng)有充足的時(shí)間、精力和基礎(chǔ)知識來重新學(xué)習(xí)一下
    2022-11-11
  • Python個(gè)人博客程序開發(fā)實(shí)例信息顯示

    Python個(gè)人博客程序開發(fā)實(shí)例信息顯示

    這篇文章主要介紹了怎樣用Python來實(shí)現(xiàn)一個(gè)完整的個(gè)人博客系統(tǒng),我們通過實(shí)操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識,感興趣的朋友一起來看看吧
    2022-12-12
  • pytorch 模型可視化的例子

    pytorch 模型可視化的例子

    今天小編就為大家分享一篇pytorch 模型可視化的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python使用selenium實(shí)現(xiàn)網(wǎng)頁用戶名 密碼 驗(yàn)證碼自動(dòng)登錄功能

    Python使用selenium實(shí)現(xiàn)網(wǎng)頁用戶名 密碼 驗(yàn)證碼自動(dòng)登錄功能

    這篇文章主要介紹了Python使用selenium實(shí)現(xiàn)網(wǎng)頁用戶名 密碼 驗(yàn)證碼自動(dòng)登錄功能,實(shí)現(xiàn)思路很簡單,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • 解決Python中定時(shí)任務(wù)線程無法自動(dòng)退出的問題

    解決Python中定時(shí)任務(wù)線程無法自動(dòng)退出的問題

    今天小編就為大家分享一篇解決Python中定時(shí)任務(wù)線程無法自動(dòng)退出的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python 實(shí)現(xiàn)mysql增刪查改示例代碼

    python 實(shí)現(xiàn)mysql增刪查改示例代碼

    python中可以通過pymysql實(shí)現(xiàn)MySQL數(shù)據(jù)庫的連接,并實(shí)現(xiàn)數(shù)據(jù)庫的各種操作,這篇文章主要給大家介紹了關(guān)于pymsql實(shí)現(xiàn)增刪改查的示例代碼,需要的朋友可以參考下
    2021-11-11
  • 關(guān)于tensorflow softmax函數(shù)用法解析

    關(guān)于tensorflow softmax函數(shù)用法解析

    這篇文章主要介紹了關(guān)于tensorflow softmax函數(shù)用法解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件及出現(xiàn)問題解決方法

    使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件及出現(xiàn)問題解決方法

    這篇文章主要介紹了使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件的方法,給大家介紹了通過Pyinstaller打包Pygame庫寫的小游戲程序出現(xiàn)的問題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python process模塊的使用簡介

    python process模塊的使用簡介

    在python中大部分情況需要使用多進(jìn)程,python提供了multiprocessing模塊。multiprocessing模塊的功能眾多:支持子進(jìn)程、通信和共享數(shù)據(jù)、執(zhí)行不同形式的同步,提供了Process、Queue、Pipe、Lock等組件。本文將著重講解process模塊的使用
    2021-05-05

最新評論

遵化市| 井研县| 故城县| 吉隆县| 乌拉特前旗| 常德市| 安顺市| 平塘县| 江达县| 白河县| 保定市| 南皮县| 泗洪县| 崇阳县| 青阳县| 宜都市| 含山县| 厦门市| 常熟市| 稷山县| 观塘区| 台中县| 富民县| 九江市| 滦平县| 泸水县| 德化县| 莎车县| 来凤县| 晋州市| 大悟县| 山西省| 黄梅县| 阿克陶县| 宁阳县| 盐池县| 浦城县| 皋兰县| 建昌县| 都昌县| 达州市|