Python 數據庫Insert語句腳本生成工具(SQL Server)


編寫這個小工具,是因為平時部署項目的時候,需要導出一些公共的數據(權限、參數設置等),覆蓋插入正式環境。

話不多說,直接上代碼:

import pyodbc
import warnings
import decimal
import winreg
import os
import configparser
import time
import datetime

warnings.filterwarnings('ignore')

def link():
    root_dir = os.path.split(os.path.realpath(__file__))[0]# 獲取當前文件所在目錄的上一級目錄,即項目所在目錄
    configPath = os.path.join(root_dir, "config.txt")
    cf = configparser.ConfigParser()
    cf.read(configPath)  # 拼接得到config.txt文件的路徑,直接使用

    # 數據庫服務器信息
    driver = cf.get("Mssql-Database", "driver")  # 因版本不同而異
    server = cf.get("Mssql-Database", "server")  
    user = cf.get("Mssql-Database", "user")
    password = cf.get("Mssql-Database", "password")
    database = cf.get("Mssql-Database", "database")
    table = cf.get("Mssql-Database", "table")
 
    conn = pyodbc.connect(driver=driver, server=server, user=user, password=password, database=database) #數據庫鏈接
 
    cur = conn.cursor()#開啟

    arr = table.split(',') #多個表查詢,用逗號隔開','
    path = get_desktop() + "\\SqlDataScript"

    if not os.path.exists(path):
            os.mkdir(path)

    for ar in arr:
        sql='SELECT * FROM %s;'%ar #執行查詢
        print(sql)  # 查詢語句
        cur.execute(sql)
        rows = cur.fetchall()  # list

        index = cur.description

        f = open(path +"\\"+ ar +"("+ time.strftime('%Y%m%d%H%M%S') +")" +".sql","w+",encoding='utf-8') #生成腳本(表名+時間戳為文件名)
        #拼接insert語句
        for res in rows:
            sqlText = 'INSERT INTO %s('%ar
            sqlVal = 'VALUES('

            for i in range(len(index)):
                sqlText = sqlText + index[i][0] +','#字段名
                if type(res[i]) == datetime.datetime: #時間格式字段,保留時分秒(不限制的話,有時候生成的毫秒格式有問題)
                    sqlVal = sqlVal + "'%s',"%res[i].strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
                else:
                    sqlVal = sqlVal + "'%s',"%res[i] #字段內容

            sqlVal = sqlVal.strip(',') + ')' #去除最后的','
            sqlText = sqlText.strip(',') + ')' +' '+ sqlVal + ';' #字段名 + 字段內容
            print(sqlText) #打印sql
            f.write("%s\r\n" % sqlText) #文件寫入

        f.close()

    conn.close() #關閉數據庫鏈接

    os.system("start explorer "+ path) #打開文件存放目錄

# 獲取桌面路徑
def get_desktop():
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
    return winreg.QueryValueEx(key, "Desktop")[0]

if __name__=='__main__':
    link()

執行完的效果展示:

表名加時間戳命名,臨時存放桌面文件夾,並自動打開文件夾(方便查看,不用去找)。

config.txt  配置文件,搭配使用,需要訪問什么數據庫直接改配置文件即可。

數據庫訪問地址要帶上端口號192.168.1.222,1433

python 打包exe:

找到文件所在目錄

執行腳本pyinstaller -F BackUp.py

打包成功,exe生成的路徑如下:

改個名字,把config文件一起配合使用即可。大功告成~

附上百度雲的共享地址:

鏈接:https://pan.baidu.com/s/1AyvUDNDM2lBZlHmQNanpbA 
提取碼:2qkm

 


免責聲明!

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



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