如何通过pyodbc备份数据库

2024-03-21

当使用 pyodbc 游标执行时,备份语句不能在事务中使用。 pyodbc 似乎在默认事务内执行查询。 我也尝试过使用自动提交模式或在备份语句之前添加提交语句。这两个都不起作用。

#can't execute the backup statement in transaction
cur.execute("backup database database_name to disk = 'backup_path'")
#not working too
cur.execute("commit;backup database database_name to disk = 'backup_path'")

是否可以通过pyodbc执行备份语句?提前致谢!

-----添加了附加信息------------------------------------------ ----------------------------

备份操作封装在一个函数中,例如:

def backupdb(con, name, save_path):
    # with autocommit mode, should be pyodbc.connect(con, autocommit=True)
    con = pyodbc.connect(con) 
    query = "backup database %s to disk = '%s'" % (name, save_path)
    cur = con.cursor()
    cur.execute(query)
    cur.commit()
    con.close()

如果通过以下代码调用该函数,

backupdb('DRIVER={SQL Server};SERVER=.\sqlexpress;DATABASE=master;Trusted_Connection=yes',
             'DatabaseName',
             'd:\\DatabaseName.bak')

那么例外将是:

File "C:/Documents and Settings/Administrator/Desktop/bakdb.py", line 14, in <module>'d:\\DatabaseName.bak')
File "C:/Documents and Settings/Administrator/Desktop/bakdb.py", line 7, in backupdb cur.execute(query)
ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot perform a backup or restore operation within a transaction. (3021) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]BACKUP DATABASE is terminating abnormally. (3013)')

打开关键字autocommit=True,该函数将静默运行,但备份文件夹中不会生成备份文件。


假设您使用的是 SQL Server,请指定autocommit=True当连接建立时:

>>> import pyodbc
>>> connection = pyodbc.connect(driver='{SQL Server Native Client 11.0}', 
                                server='InstanceName', database='master', 
                                trusted_connection='yes', autocommit=True)
>>> backup = "BACKUP DATABASE [AdventureWorks] TO DISK = N'AdventureWorks.bak'"
>>> cursor = connection.cursor().execute(backup)
>>> connection.close()

这是使用pyodbc 3.0.7 with Python 3.3.2。我相信对于旧版本的 pyodbc 你需要使用Cursor.nextset() https://code.google.com/p/pyodbc/wiki/Cursor#nextset用于创建备份文件。例如:

>>> import pyodbc
>>> connection = pyodbc.connect(driver='{SQL Server Native Client 11.0}', 
                                server='InstanceName', database='master', 
                                trusted_connection='yes', autocommit=True)
>>> backup = "E:\AdventureWorks.bak"
>>> sql = "BACKUP DATABASE [AdventureWorks] TO DISK = N'{0}'".format(backup)
>>> cursor = connection.cursor().execute(sql)
>>> while cursor.nextset():
>>>    pass
>>> connection.close()

值得注意的是,我不必使用 Cursor.nextset() 来使用当前版本的 pyodbc 和 SQL Server 2008 R2 创建备份文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过pyodbc备份数据库 的相关文章

  • 如何让python优雅地失败?

    我只是想知道如何让 python 在所有可能的错误中以用户定义的方式失败 例如 我正在编写一个处理 大 项目列表的程序 并且某些项目可能不符合我定义的格式 如果 python 检测到错误 它目前只会输出一条丑陋的错误消息并停止整个过程 但是
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 组和平均 NumPy 矩阵

    假设我有一个任意的 numpy 矩阵 如下所示 arr 6 0 12 0 1 0 7 0 9 0 1 0 8 0 7 0 1 0 4 0 3 0 2 0 6 0 1 0 2 0 2 0 5 0 2 0 9 0 4 0 3 0 2 0 1 0
  • Tipfy:如何在模板中显示blob?

    鉴于在 gae 上使用tipfy http www tipfy org python 以下模型 greeting avatar db Blob avatar 显示 blob 此处为图像 的模板标签是什么 在这种情况下 斑点是一个图像 这很棒
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • Django 不会以奇怪的错误“AttributeError: 'module' object has no attribute 'getargspec'”启动

    我对 Django 的内部结构有点缺乏经验 所以我现在完全陷入困境 它昨天起作用了 但我不记得我改变过任何重要的东西 当我转身时DEBUG True任何恰好位于列表中第一个的模块上都有堆栈跟踪 Traceback most recent c
  • Django 模型字段默认基于另一个模型字段

    我使用 Django Admin 构建一个管理站点 有两张表 一张是ModelA其中有数据 另一个是ModelB里面什么也没有 如果一个模型字段b b in ModelB为None 可以显示在网页上 值为ModelA的场a b 我不知道该怎
  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • 如何使用 PyMongo 在重复键错误后继续插入

    如果我需要在 MongoDB 中插入尚不存在的文档 db stock update one document set document upsert True 将完成这项工作 如果我错了 请随时纠正我 但是 如果我有一个文档列表并想将它们全
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • 计算 pyspark df 列中子字符串列表的出现次数

    我想计算子字符串列表的出现次数 并根据 pyspark df 中包含长字符串的列创建一个列 Input ID History 1 USA UK IND DEN MAL SWE AUS 2 USA UK PAK NOR 3 NOR NZE 4
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • 在Python中连续解析文件

    我正在编写一个脚本 该脚本使用 HTTP 流量行解析文件 并取出域 目前仅将它们打印到屏幕上 我正在使用 httpry 将流量连续写入文件 这是我用来删除域名的脚本 usr bin python import re input open r
  • 在 Python 中访问 argparse 的参数值

    我正在尝试为我的程序设置一些简单的标志参数 但无法弄清楚如何访问它们 我有 argparser parser argparse ArgumentParser description Simple PostScript Interpreter
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客

随机推荐

  • C++ 继承和成员函数指针

    在C 中 成员函数指针可以用来指向派生 甚至基 类成员吗 编辑 也许一个例子会有所帮助 假设我们有一个由三个类组成的层次结构X Y Z按照继承顺序 Y因此有一个基类X和一个派生类Z 现在我们可以定义一个成员函数指针p上课Y 写成 void
  • 空闲后 JVM JIT 去优化

    我使用Java主要是为了编写宠物项目 这些项目大部分时间都是闲置的 闲置数小时 天后 响应时间增加到秒 最多 10 秒 然后慢慢减少到 200 300 毫秒 据我了解 发生这种情况是因为 JIT去优化 https www safariboo
  • typescript - 在路径中包含类型,但不编译它们

    我在打字稿中遇到了问题 我有以下层次结构 types declaration1 ts declaration2 ts common utils1 ts utils2 ts tests utils1 test ts utils2 test t
  • 对方案中的列表进行排序

    如何编写一个排序算法 以升序返回列表 ex 1 3 5 2 9 回报 1 2 3 5 9 大多数Scheme 实现都附带一个对列表进行排序的过程 如果您的实现没有提供这一功能 那么为您提供一个并不困难 下面是快速排序算法的实现 gt def
  • vmap 遍历 jax 中的列表

    使用 jax 我尝试计算每个样本的梯度 处理它们 然后将它们转化为正常形式以计算正常参数更新 我的工作代码看起来像 differentiate per sample jit vmap grad loss in axes None 0 0 g
  • 在编辑模式下使用自定义 UILabels 分组 UITableView

    我有一个分组UITableView用户可以在其中进入编辑模式并从表中删除行 表格的每个单元格有两个UILabels 当表格进入编辑模式时 自定义UILabels向右推并超出单元格的右边界 如果我使用标准cell textLabel 标签调整
  • 如何根据纬度和经度获取两个位置之间的距离?

    我正在尝试根据用户到每个位置的距离显示一个列表 这些位置以 JSON 形式从 Firebase 接收 为了获取用户位置 我正在使用 navigator geolocation getCurrentPosition function posi
  • 在 angularjs $q 中向 Promise 的成功回调传递参数

    我意识到这是一个与此非常相似的问题one https stackoverflow com questions 24963151 passing parameters to promises callback in angularjs 但我仍
  • commons httpclient - 将查询字符串参数添加到 GET/POST 请求

    我正在使用 commons HttpClient 对 Spring servlet 进行 http 调用 我需要在查询字符串中添加一些参数 所以我做了以下事情 HttpRequestBase request new HttpGet url
  • 回复主题 google-api-ruby-client

    下面是我使用 google api ruby client 创建消息的代码 几乎 的样子 service Google Apis GmailV1 GmailService new message RMail Message new mess
  • 使用 Xcode 命令行从 iPhone 下载应用程序的容器

    我开发了一个 iOS 应用程序 该应用程序保存了一些出现在应用程序容器中的日志 我可以使用 Xcode gt 设备 gt 选择应用程序 gt 下载容器菜单选项下载此容器 然后我可以在目录中看到我的日志文件 AppData Documents
  • System.Net.WebException HTTP 状态代码

    有没有一种简单的方法来获取 HTTP 状态代码System Net WebException 也许是这样的 try catch WebException ex if ex Status WebExceptionStatus Protocol
  • 在 ReactJs 中为组件创建不同的移动布局

    我们如何使用 ReactJs 为组件 具有不同的桌面类型布局 创建完全不同的 移动类型布局 不是 Responsive 响应式是 css 必须处理的事情 组件应该有不同的布局 即这里为桌面屏幕创建一个带有菜单 标题菜单 的页面 该页面成为小
  • 如何使用python将带有时区的字符串转换为utc中的日期时间?

    我是新的Python 我被困在某一点上 我有一个变量 将时间存储为具有指定时区的字符串 它看起来像下面给出的 gt gt gt print usertime 2017 08 18T08 00 00 04 30 gt gt gt type u
  • 搜索 Jenkins 作业的控制台输出

    我的 Jenkins 工作有 100 多个构建 我需要搜索该作业的所有构建 以查找控制台输出中具有特定字符串的构建 有没有什么插件可以做到这一点 我怎么做 我经常使用詹金斯脚本控制台 https wiki jenkins ci org di
  • 如何在Servlet中使用“应用程序”对象?

    如果我们正在编写 JSP 文件 则只需使用嵌入的 应用程序 对象 但如何在 Servlet 中使用它呢 The applicationJSP 中的对象称为ServletContext https docs oracle com javaee
  • 如何通过printf将正数打印为负数

    在阅读有关 printf 的内容时 我发现它可以通过以下代码 对于 根据用户的需要打印正数或负数 但是该代码不起作用并且输出是正值 请指出错误所在 谢谢 include
  • 获取给定 ISO 8601 日历年的周数

    我需要创建一个函数 根据 ISO 周系统 ISO8601 在 Swift 中计算给定年份的周数 我需要这个数字作为 Int 首先我想我需要做一个NSDate然后我意识到有时 12 月 31 日是下一年的第一周 例如 2014 年 12 月
  • “read”命令在一行中最多可以包含多少个字符

    我有以下 shell 脚本来从终端读取行 bin bash while read line do if z line then break fi echo line done 我无法输入超过 256 个字符 终端不允许我这样做 终端不会打印
  • 如何通过pyodbc备份数据库

    当使用 pyodbc 游标执行时 备份语句不能在事务中使用 pyodbc 似乎在默认事务内执行查询 我也尝试过使用自动提交模式或在备份语句之前添加提交语句 这两个都不起作用 can t execute the backup statemen