python查询sqlserver视图_Python备份sqlserver中的视图、函数、存储过程

本文提供了一个Python脚本,用于连接到SQL Server数据库并备份视图、函数和存储过程。通过调用`ado_cmd`和`ado_sel`函数执行SQL查询,获取对象定义,并将结果写入相应类型的文件夹中。脚本首先建立数据库连接,然后通过`sysobjects`系统表筛选出需要备份的对象类型,并保存为.sql文件。
摘要由CSDN通过智能技术生成

[Python]代码

#!/usr/bin/python

# coding=gbk

import os

import re

import time

import datetime

import operator

import pyodbc

import sys

"""

backup procedure,view,function

"""

def ado_cmd(src, sql):

db = pyodbc.connect(src)

cursor = db.cursor()

cursor.execute(sql)

db.commit()

db.close()

def ado_sel(src, sql):

db = pyodbc.connect(src)

cursor = db.cursor()

cursor.execute(sql)

ds = cursor.fetchall()

db.close()

return ds

def getprocedure(src, pname):

sql = "EXEC Sp_HelpText '" + pname + "';"

ds = ado_sel(src, sql)

text = ''

index = 0

try:

for dr in ds:

#print(str(dr[0]))

text = text + str(dr[0])

text = text.replace("\r\n", "") + "\n"

index = index + 1

except Exception as e:

print("查询存储过程出错:" + pname + " [line:"+str(index)+"] ")

print(e)

return text

if __name__ == '__main__':

src = 'DRIVER={SQL Server};SERVER=服务器;DATABASE=数据库;UID=用户名;PWD=密码'

# p procedure; v view; fn function

sql = "SELECT [name],[type] FROM sysobjects WHERE type IN('p','v','fn') order by name"

#src = 'DSN=sampledb;UID=dba;pwd=sql'

now = datetime.datetime.now()

path = now.strftime('%Y-%m-%d')

if os.path.exists(path):

for i in range(98,122):

new_path = path + "_" + chr(i)

if not os.path.exists(new_path):

path = new_path

break

else:

print(new_path + '已存在')

os.makedirs(path) #创建新文件夹

sv = "View"

sp = "Prodecure"

sfn = "Function"

os.makedirs(path + '/' + sv)

os.makedirs(path + '/' + sp)

os.makedirs(path + '/' + sfn)

ds = ado_sel(src, sql)

i_count = len(ds)

print("count=" + str(i_count))

for dr in ds:

p2 = ""

pname = str(dr[0])

typ = str(dr[1])

typ = typ.strip()

if typ == "V" : p2 = sv

elif typ == "P" : p2 = sp

elif typ == "FN" : p2 = sfn

print(typ + ", " + p2 + ", " + pname)

text = getprocedure(src, pname)

filename = pname + ".sql"

file1 = open(path + "/" + p2 + "/" + filename, "w")

file1.write(text + "\n")

file1.close

QQ截图20150910150454.png

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值