首页 > 数据库 >python生成sql server 数据库表名和sql脚本

python生成sql server 数据库表名和sql脚本

时间:2022-09-22 11:13:42浏览次数:57  
标签:file0 python self tableName server sql 数据库

# -*- coding:utf-8 -*-
# 作者  :TY
# 时间  :2020-08-05 22:03
# 文件名称:sql server数据库导表脚本.PY
# 开发工具:PyCharm

import pymssql
import os

class SQLServer:
    def __init__(self, server, user, password, database):
        # 类的构造函数,初始化DBC连接信息
        self.server = server
        self.user = user
        self.password = password
        self.database = database

    def __GetConnect(self):
        # 得到数据库连接信息,返回conn.cursor()
        if not self.database:
            raise (NameError, "没有设置数据库信息")
        self.conn = pymssql.connect(server=self.server, user=self.user, password=self.password, database=self.database)
        cur = self.conn.cursor()
        if not cur:
            raise (NameError, "连接数据库失败")  # 将DBC信息赋值给cur
        else:
            return cur

    def ExecQuery(self, sql):
        '''
        执行查询语句
        返回一个包含tuple的list,list是元素的记录行,tuple记录每行的字段数值
        '''
        cur = self.__GetConnect()
        cur.execute(sql)  # 执行查询语句
        result = cur.fetchall()  # fetchall()获取查询结果
        # 查询完毕关闭数据库连接
        self.conn.close()
        return result


def main():
    results1=[]  # 打开主键关闭功能
    results2 = []  # 生成insert 脚本
    results3 = []  # 关闭主键关闭功能
    results4 = []  # 生成数据库表名
    results5 = []  # 生成清空数据库表SQL
    msg = SQLServer(server="127.0.0.1", user="sa", password="sa1234.", database="UFDATA_001_2018")
    #查询一个表中的所有数据
    result = msg.ExecQuery(
        "SELECT NAME FROM UFDATA_001_2018.dbo.SYSOBJECTS WHERE XTYPE='U' ORDER BY NAME")

    for Value in result:
       # insert into fa_Cards select * from [UFDATA_555_2018].[dbo].[fa_Cards]
        tableName = "".join(Value)
        result122 = msg.ExecQuery(
           "select count(*) from %s"%(tableName)
        )
        # 生成数据库表名
        results4.append(tableName+",")
        results5.append("delete "+tableName+"\r go \r")


        for value2 in result122:
            count1 = int("".join(str(s) for s in value2))
            if int(count1) > 0 :
                sqlexport1 = " set IDENTITY_INSERT %s  on \r go \r" % (tableName)  # 将元祖转换为字符串
                sqlexport2 = " insert into %s select * from [UFDATA_554_2018].[dbo].%s \r go \r" % (
                tableName, tableName)  # 将元祖转换为字符串
                sqlexport3 = " set IDENTITY_INSERT %s  off \r go \r" % (tableName)  # 将元祖转换为字符串

                results1.append(sqlexport1)
                results2.append(sqlexport2)
                results3.append(sqlexport3)

    # -------将所有的SQL脚本生成到txt文件中
    with open('数据库导表sql脚本1on.txt', 'a') as file0:
        print("".join(results1), file=file0)
    with open('数据库导表sql脚2.txt', 'a') as file0:
        print("".join(results2), file=file0)
    with open('数据库导表sql脚本3off.txt', 'a') as file0:
        print("".join(results3), file=file0)
    with open('数据库导表sql脚本4表名.txt', 'a') as file0:
        print("".join(results4), file=file0)
    with open('数据库导表sql脚本5清空数据表.txt', 'a') as file0:
        print("".join(results5), file=file0)

print("生成完成")




if __name__ == '__main__':
    main()

标签:file0,python,self,tableName,server,sql,数据库
From: https://www.cnblogs.com/tianyuanblog/p/16718472.html

相关文章

  • 【SQLServer 】SQLServer健康报告
    使用:1.创建存储过程:usp_SQLhealthcheck_report2.执行存储过程executeusp_SQLhealthcheck_report3.输入mail地址(可选项)4.保存结果输出格式:HTML(支持将html以邮件附件的......
  • 【SQLServer】SQLServer执行计划概览
    在本系列文章中,我们将纵览SQLServer执行计划的海洋,从定义执行计划的概念开始,遍历执行计划的类型、组件和运算符,分析执行计划,最后我们将介绍如何保存和管理执行计划。当你......
  • MySQL常用命令
    MySQL基础1.创建数据库createdatabaseshop;#使用库useshop;2.创建表createtableuser(id intprimarykey,namechar(10))ENGINE=InnoDBDEFAULTCHARSET=u......
  • SQL查临时表没有返回数据集
    转载:https://www.cnblogs.com/remember-forget/p/6089467.html问题描述:在SQL中可以查询到数据,返回不到页面上。解决办法:setnocountoncreatetable#list 有一种说......
  • 【Python】python语言基础概述
    1.文件类型python文件有3种类型:(1)源代码文件:xx.py。(2)字节代码文件:xx.pyc。由xx.py编译成的二进制字节码文件,通过Python程序加载执行,速度快,能够隐藏源码......
  • python 爬虫curl
    目录python爬虫curlpython爬虫curl#!/usr/bin/envpython#-*-coding:utf-8-*-#BY:wenchao.Litime:2021/11/18#curl工具:c写的一个命令#-A设置user-agent......
  • Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
    mysql存储在磁盘中,各种天灾人祸都会导致数据丢失。大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的。万......
  • python数据处理小工具
    python处理数据常用方法,包括:1)按照指定行数split_size,分割超大csv文件2)读取csv文件数据,并发送http-json请求,订正生产或者测试环境数据3)csv文件按照某一列分割成多个cs......
  • centos7下使用yum安装mysql
    CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。1.下载mysql的repo源$wget http://repo.mysql.com/mysql-community-release-e......
  • MySQL基本命令
    一、mysql服务的启动和停止netstopmysqlnetstartmysql二、 登陆mysql语法如下:mysql-u用户名-p用户密码键入命令mysql-uroot-p,回车后提示你输入密码,输入12345,......