pymysql執行sql腳本


從網上搜索了半天也沒有合適的,大多是以;分隔后直接執行, 但是這樣會存在注釋的問題。一般導出的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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM