五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2022-03-16 12:51 | 文章來源:站長之家

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

RENAME TABLE old_table TO new_table;  

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

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

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

  1. 創(chuàng)建新數(shù)據(jù)庫
  2. 獲取舊數(shù)據(jù)庫下所有的表名
  3. 把表重命名到新的數(shù)據(jù)庫名下
  4. 刪除舊數(shù)據(jù)庫

下面使用Python代碼去實現(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ù)無價,請先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: 默認連接的數(shù)據(jù)庫
 :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):
 """
 數(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)

以上就是運用Python快速的對MySQL數(shù)據(jù)庫進行重命名的詳細內(nèi)容,更多關(guān)于python 重命名MySQL數(shù)據(jù)庫的資料請關(guān)注本站其它相關(guān)文章!

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部