簡單的Python指令碼 批量生成mysql資料庫表

2021-10-03 23:46:35 字數 2078 閱讀 9329

這小指令碼主要是方便批量建立資料庫表,需求是從a庫中找到指定表,提取指定表的sql建立語句,然後在b庫中建立相同具有相同規則的表名。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

###注意事項###

#本指令碼為臨時編寫,所以還有許多不足之處,使用時請看執行命令!

#本指令碼是呼叫外部引數啟動執行,使用方式如下:

# python指令碼空格加上目標資料表名稱,示例:

# ./batch_creation.py aaa

# 回車即可,如果aaa這個資料表存在則會首先讀取該錶的原有ddl內容,

# 然後到新的資料庫中重新建立資料表,使用者也可以更改指令碼內容,

# 比如將資料庫連線資訊完全通過位置引數來就行獲取。

# 另外需要改動建立指令碼的個數,可以修改46行中range即可。

import pymysql

import json

import sys

dic =

db1 = pymysql.connect(host=

'主資料庫位址'

, port=埠號, user=

'資料庫使用者名稱'

, passwd=

'資料庫使用者密碼'

,db=

'資料庫名'

)db2 = pymysql.connect(host=

'被資料庫位址'

, port=埠號, user=

'資料庫使用者名稱'

, passwd=

'資料庫使用者密碼'

,db=

'資料庫名'

)def

mysql_tables_ddl_select()

: cursor = db1.cursor(

) cursor.execute(

"show tables"

) data = cursor.fetchall(

)try

:for i in data:

for u in i:

cursor.execute(

"show create table {}"

.format

(str

(u))

) ddl=cursor.fetchall(

) dic.update(

dict

.fromkeys(i,

[ddl[0]

[1]]

))finally

: db1.close(

)print

("查詢表ddl完成!"

)def

mysql_tables_ddl_create()

: mysql_tables_ddl_select(

)if sys.ar**[1]

in dic:

dic_list = dic[sys.ar**[1]

] s_str =

"".join(dic_list)

dic_list1 = s_str.replace(sys.ar**[1]

,'{}'

)try

:with db2.cursor(

)as cursor:

for mumber in

range(10

):checksql =

'''drop table if exists {}'''

.format

(sys.ar**[1]

) cursor.execute(checksql)

sql = dic_list1.

format

(str

(sys.ar**[1]

)+'_'+

str(mumber)

) cursor.execute(sql)

db2.commit(

)finally

: db2.close(

)print

("建立表完成!"

)mysql_tables_ddl_create(

)

Python指令碼批量生成SQL語句

通過python指令碼批量生成插入資料的sql語句 原始sql語句 insert into system user id,login name,name,password,salt,code,createtime,email,main org,positions,status,used,url,in...

利用Python指令碼批量生成SQL語句

通過python指令碼批量生成插入資料的sql語句 原始swww.cppcns.comql語句 insert into system user id,login name,name,password,salt,code,createtime,email程式設計客棧,main org,position...

python 批量改名指令碼

第66屆艾美獎上,絕命毒師 一舉拿下了劇情類最佳劇集 最佳男主 最佳男女配角和最佳劇本5項重要大獎,成為艾美獎最大的贏家。這部歷時六年,共62集的劇集憑藉metacritic metacritic的評分是收錄各 的評分,並綜合得出的評分 99分 滿分100 的成績,成為寫入健力士世界紀錄大全的 世界...