SQLAlchemy 不会更新我的数据库

2023-11-26

我正在使用 SQLAlchemy-0.7.8 制作金字塔应用程序。我使用的是64位Python3.2。

问题是,为什么以下函数不向数据库提交任何内容?

def create_card(sText,sCard):
    """
    create a wildcard instance if all is well (ie,sCard match in sText)
    return 
        oCard, dCard
    otherwise return False,False
    """
    oMatch = re.search(sCard,sText)
    if oMatch:
        oCard = WildCard()
        #set up some stuff about the WildCard

        DBSession.add(oCard)
        DBSession.flush()
        dCard = {
                    'id'            : oCard.id,
                    'span'          : oMatch.span(),
                    'card'          : oCard.card_string,
                            }
        return oCard,dCard
    return False,False  

我从另一个脚本导入数据库会话。它的定义如下:

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))

以下是一些背景信息:

我正在制作的应用程序将用于通过使用正则表达式来表征大块 HTML。如果应用程序卡住并认为一段文本应该有一个通配符匹配,那么用户会得到一个小表单来填写。提交表单后,将调用 create_card 。如果通配符与字符串匹配,则创建一个通配符实例。

WildCard 类没有什么特别的,它只是存储一个字符串和一些整数。如果我打印出 dCard ,看起来通配符已成功提交,因为它有一个整数 ID。如果我不在数据库会话上调用刷新,则 dCard['id'] 为 None。

id 字段如下所示:

id = Column(Integer,Sequence('wild_seq'), primary_key=True)

add 和flush 行会导致以下控制台输出:

2012-09-16 12:30:34,845 INFO  [sqlalchemy.engine.base.Engine][Dummy-2] INSERT INTO wildcard_wildcards (card_string, range_id, brand_id, category_id, group_cat_map_id, heading_group_id, heading_to_grp_map_id, heading_id, value_map_id, igneore_match) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2012-09-16 12:30:34,845 INFO  [sqlalchemy.engine.base.Engine][Dummy-2] ('sCard contents', None, None, None, None, None, None, None, None, 0)

到目前为止,一切都按预期运行。

问题是这样的: 尽管 WildCard 实例看起来已经提交到数据库,并且没有引发异常,但对数据库的直接检查表明没有进行任何更改。

用commit()替换flush()会引发以下异常:

AssertionError: Transaction must be committed using the transaction manager

你需要commit您的交易。

您可以明确地执行此操作(通过调用DBSession.commit()或通过使用pyramid_tm中间件;后者在成功响应(使用 2xx HTTP 响应)时自动提交事务。

如果您使用,后者仅提交 SQLAlchemy 事务ZopeTransactionExtension与您的会话制作者扩展:

from zope.sqlalchemy import ZopeTransactionExtension

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))

如果您已经在使用ZopeTransactionExtension并且想要显式提交您的事务,您需要使用transaction包裹: 进口交易

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

SQLAlchemy 不会更新我的数据库 的相关文章

  • OutOfRangeError(请参阅上面的回溯):FIFOQueue '_1_batch/fifo_queue' 已关闭并且元素不足(请求 32,当前大小 0)

    我在使用队列中张量流读取图像时遇到问题 请让我知道我犯了什么错误 下面是代码 import tensorflow as tf slim tf contrib slim from tensorflow python framework imp
  • 用定点迭代求解该方程

    我怎样才能解这个方程 x3 x 1 0 使用定点迭代 有没有定点迭代我可以在网上找到代码 尤其是Python 吗 Using scipy optimize fixed point http docs scipy org doc scipy
  • 在 python 中查找价格动量的有效方法:对列的最后 n 个条目求平均值

    我正在定义价格动量是给定股票过去动量的平均值n days 反过来 动量是一种分类 如果当天的收盘价高于前一天 则每天标记为 1 如果当天的收盘价低于前一天 则标记为 1 我的库存变化百分比如下 df close in percent np
  • 从内存中发送图像

    我正在尝试为 Discord 机器人实现一个系统 该系统可以动态修改图像并将其发送给机器人用户 为此 我决定使用 Pillow PIL 库 因为它对于我的目的来说似乎简单明了 这是我的工作代码的示例 它加载一个示例图像 作为测试修改 在其上
  • argparse 更改参数的定义

    我按如下方式设置参数解析器 parser argparse ArgumentParser parser add argument point help enter a point e g 2 3 4 parser parse args po
  • 带有redirect_uri的social-auth-app-django Facebook后端状态

    我知道我的问题听起来像是重复的 但我到处寻找但没有找到任何解决方案 我正在努力为我的 django web 应用程序实现社交登录 到目前为止 谷歌 推特和雅虎登录均按预期工作 但facebook总是给出以下错误 URL 被阻止 此重定向失败
  • 有效地写入 pandas 中的多个相邻列

    使用 numpy ndarray 可以一次写入多个列 而无需先进行复制 只要它们相邻 如果我想写入数组的前三列 我会写 a 0 0 3 1 2 3 this is very fast a is a numpy ndarray 我希望在 pa
  • 更新或插入 MySQL Python

    如果记录已存在 我需要更新一行 如果不存在 我需要创建一个新记录 我理解 ON DUPLICATE KEY 将使用 MYSQLdb 完成此操作 但是我无法使其正常工作 我的代码如下 cursor database cursor cursor
  • 如何避免在matplotlib中调用latex(输出到pgf)

    我使用 matplotlib 及其 pgf 后端来生成包含在 LaTeX 投影仪文档中的绘图 当我使用未定义的乳胶命令时 我遇到了麻烦 但对于我的应用程序 我不需要 matplotlib 来使用 Latex 生成标签或注释 我只想要正确的
  • Pandas如何将多个函数应用于数据框

    有没有办法像 DataFrameGroupBy agg 函数那样将函数列表应用于 DataFrame 中的每一列 我发现了一个丑陋的方法来做到这一点 df pd DataFrame dict one np random uniform 0
  • 当我移动我的 pygame 角色时,它会留下痕迹[重复]

    这个问题在这里已经有答案了 我一直在尝试用 Python 制作一个游戏 但是当我移动我的角色时 它会留下痕迹 我知道它并没有显示出那么多 但如果你靠近的话 你可以看到这条踪迹 这真的让我很困扰 这是我的代码 import pygame im
  • 在 grpc python 中处理异步流请求

    我试图了解如何使用双向流处理 grpc api 使用 Python API 假设我有以下简单的服务器定义 syntax proto3 package simple service TestService rpc Translate stre
  • Google App Engine self.redirect() POST 方法

    在 GAE Python 中 使用 webApp 框架 调用 self redirect some url 通过 GET 方法将用户重定向到该 URL 是否也可以通过带有一些参数的 POST 方法进行 重定向 如果可以的话 怎样做 Than
  • Django admin.py 未知命令:'collectstatic'

    我已经从 django 1 2 7 升级到 django 1 5 1我正在使用 python 2 6 6当我尝试跑步时python manage py collectstatic i get 未知命令 collectstatic 从我的设置
  • 了解字典的深度

    假设我们有这个字典 d a 1 b c 了解嵌套的最直接方法是什么depth of it 您需要创建一个递归函数 gt gt gt def depth d if isinstance d dict return 1 max map dept
  • gstreamer 中的无缝视频循环

    我正在尝试使用 gstreamer 循环播放视频 它是 python 绑定 第一次尝试是hook EOSmessage并为管道生成搜索消息 import gi gi require version Gst 1 0 from gi repos
  • 有没有比 Python 内置 == 运算符更快的方法来测试两个列表是否具有完全相同的元素?

    如果我有两个列表 每个列表有 800 个元素长并填充整数 有没有比使用内置元件更快的方法来比较它们具有完全相同的元件 如果没有 则短路 操作员 a 6 2 3 88 54 486 b 6 2 3 88 54 486 a b gt gt gt
  • 在Python中通过sys.stdout写入unicode字符串

    暂时假设一个人无法使用print 从而享受自动编码检测的好处 所以这给我们留下了sys stdout 然而 sys stdout太蠢了不做任何合理的编码 http bugs python org issue4947 现在人们阅读 Pytho
  • 如何在Python中显示坐标网格线的变换?

    假设我有常规的笛卡尔坐标系 x y 并且我考虑一个矩形网格区域 D 分成小方块 我想看看域 D 如何在 Python 中的坐标变换 T x y gt u x y v x y 下映射 我正在寻找这样的东西 See here https mat
  • Pandas:合并多个数据框并控制列名称?

    我想将九个 Pandas 数据帧合并到一个数据帧中 对两列进行联接 控制列名称 这可能吗 我有九个数据集 它们都有以下列 org name items spend 我想将它们加入到具有以下列的单个数据框中 org name items df

随机推荐

  • 如何添加网络安全配置以在 Nougat 中启用 Charles 代理 SSL?

    我正在尝试启用Charles Proxy我的 SSLSamsung s8运行于Android Nougat但不知道该怎么做 Before Nougat我能够成功记录我的设备上多个应用程序的查尔斯会话 已关注this and this设置一切
  • 类型错误:Firebase 不是函数

    我正在尝试遵循 firebase Node 教程 https www firebase com docs web quickstart html 我的 node js 应用程序因 TypeError Firebase 不是函数 错误而崩溃
  • C++11 可以判断 std::thread 是否处于活动状态吗?

    令我惊讶的是 一个已完成执行但尚未加入的 C 11 std thread 对象仍然是经过考虑的活动的执行线程 以下代码示例对此进行了说明 在 Xubuntu 13 03 上使用 g 4 7 3 构建 有谁知道 C 11 标准是否提供了一种方
  • MVC DropDownListFor Null 值

    我在 MVC 中使用 htmlhelper 的下拉列表时遇到问题 当回发发生时 没有选择任何内容 并且列表模型中的值和所选项目为空 这是我的模型 namespace MvcTestWebApp Models public class Cus
  • 使用“for”循环对包含数字的数组进行排序

    我是 JavaScript 新手 我有一个包含数字的数组 var arr 2 4 8 1 5 9 3 7 6 我如何使用本地人对其进行排序for loop在 JavaScript 中 我知道排序功能可用 但我希望它通过for loop 输出
  • 如果出现错误,如何使用 try...catch 并让我的脚本停止?

    我试图让我的脚本在遇到错误时停止 并使用 try catch 为我提供一种简单的方法来处理错误 我本以为这是世界上最简单的事情 但我显然在做一些愚蠢的事情 我读了几个小时 但我被困住了 任何帮助都会非常方便 谢谢 这是一些示例代码 我把错误
  • CSS 框上的斜角[重复]

    这个问题在这里已经有答案了 我使用 CSS 的时间很短 我正在尝试制作一个普通的盒子 但左上角以 45 度角切掉 数额也不小 我正在看那个角度的一个相当大的切角 这个效果 我该怎么办 描述 倾斜 http meyerweb com eric
  • Swift 协议继承和通用函数

    考虑以下游乐场 import Foundation protocol StringInitable init string String class A StringInitable var stored String required i
  • 如何在 Apache Spark 中获取上一行的数据

    从 Spark Data 框架中查找每个城市上个月的销售情况 City Month Sale c1 JAN 2017 49 c1 FEB 2017 46 c1 MAR 2017 83 c2 JAN 2017 59 c2 MAY 2017 6
  • ServiceStack没有服务器端异步支持

    我的一个朋友告诉我他过去看过 ServiceStack 说它看起来不错 但没有异步支持 所以在他的书中 它不是使用这个框架的选项 如果没有异步就不好 我必须同意 除非ServiceStack添加了异步 否则不确定这对我来说是否是一个不错的选
  • 使用 Async 和 Await 的 ASP.NET C#5 异步 Web 应用程序

    研究了异步 Web 开发的概念 特别是来自this来源 我创建了一个示例应用程序来证明这个概念 该解决方案由 2 个 ASP NET Web API 应用程序组成 第一个是模拟的慢端点 它等待 1000 毫秒 然后返回一个名为 Studen
  • 突出显示 HTML 文本中的单词(但不是标记)

    我试图突出显示正文内的所有匹配单词 但不突出显示任何 html 标记内的单词 例如 给出的关键字是 para 这是该段落 p class para Example of paragraph Lorem ipsum dolor sit ame
  • 课程末尾的美元符号在 Eclipse MAT 中意味着什么?

    我正在使用 Eclipse MAT 尝试追踪 Android 中的资源泄漏 如果您经常更改屏幕方向 当我转到直方图视图时 我看到我的活动与一次又一次列出的相同活动一起列出 并带有 在它之后 So like com test TestActi
  • 将“rlang”准引用与“dplyr::_join”函数一起使用

    我正在尝试编写一个我使用的自定义函数rlang的准引用 该函数内部也使用dplyr s join功能 我在下面提供了一个最小的工作示例来说明我的问题 needed libraries library tidyverse function d
  • 打印 html 文档时所有页面中的 HTML 页眉和页脚

    我创建了一个带有页眉 一些内容和页脚的 html 页面 我尝试打印 HTML 页面 结果有 2 页 我在第一页得到了页眉 在最后一页得到了页脚 我真正需要的是在所有页面中显示页眉和页脚 就像在 Word 文档中一样 我查了一下 发现使用th
  • 如何使用 Android 数据绑定动态更改视图可见性

    我正在尝试使用数据绑定实现一种简单的视图隐藏 显示 我有一个 api 调用 并且在 api 调用正在进行时我必须显示一个进度条 一旦我收到响应 就必须忽略此进度并显示数据 我尝试使用数据绑定动态更改进度条的可见性 但什么也没发生 仅在第一次
  • Python - 使用 pytest 跳过测试,除非指定

    背景 我正在使用 pytest 来测试将数据推送到数据库的网络抓取工具 该类仅拉取 html 并将 html 推送到数据库以供稍后解析 我的大多数测试都使用虚拟数据来表示 html Question 我想做一个测试 从网站上抓取网页 但我希
  • Jaxb 生成的 xml - 根元素前缀问题

    我正在尝试使用 jaxb 生成 xml 我创建了 xsd 并生成了 java 类 但是当我生成 xml 时 我在根标记中添加前缀 ns2 这是我不想要的 例如 我希望根标签是
  • 如何使SurfaceView具有透明背景?

    我有简单的布局
  • SQLAlchemy 不会更新我的数据库

    我正在使用 SQLAlchemy 0 7 8 制作金字塔应用程序 我使用的是64位Python3 2 问题是 为什么以下函数不向数据库提交任何内容 def create card sText sCard create a wildcard