pymysql執行sql指令碼
阿新 • • 發佈:2020-11-23
從網上搜索了半天也沒有合適的,大多是以;分隔後直接執行, 但是這樣會存在註釋的問題。一般匯出的sql檔案中,都包含了大量的註釋;
import pymysql def mysql_init(): # conf 包含mysql的一些配置 con = pymysql.connect(host=conf.get('db', 'mysql_uri'), port=conf.getint('db', 'mysql_port'), user=conf.get('db', 'mysql_username'), password=conf.get('db', 'mysql_password'), charset='utf8') cur = con.cursor() cur.execute("create database test character set utf8;") con.close() sync_mysql_data('test', "test.sql") print '初始化mysql資料成功' def sync_mysql_data(db, file): with open(file, "r") as f: # 開啟檔案 data = f.read() lines = data.splitlines() sql_data = '' # 將--註釋開頭的全部過濾,將空白行過濾 for line in lines: if len(line) == 0: continue elif line.startswith("--"): continue else: sql_data += line sql_list = sql_data.split(';')[:-1] sql_list = [x.replace('\n', ' ') if '\n' in x else x for x in sql_list] con = pymysql.connect(host=conf.get('db', 'mysql_uri'), port=conf.getint('db', 'mysql_port'), user=conf.get('db', 'mysql_username'), password=conf.get('db', 'mysql_password'), database=db, charset='utf8') cur = con.cursor() for sql_item in sql_list: print sql_item cur.execute(sql_item) con.close()