在 SQLAlchemy 中查询混合属性

2023-11-22

我将文件路径存储为数据库中的相对路径,但随后使用混合属性在映射时将其转换为绝对路径。当我使用此属性查询时,它会抛出错误。这是模型:

class File(Base):
    __tablename__ = 'files'
    ...

    _f_path = Column(Unicode(30))

    ...

    @hybrid_property
    def f_path(self):
        env = shelve.open('environment')
        return os.path.join(env['project_dir'], self._f_path)

    @f_path.setter
    def f_path(self, _f_path):
        self._f_path = _f_path

当我运行此查询时(其中 ref 是 unicode 字符串):

session.query(File).filter_by(f_path=ref).first()

它给了我这个错误:

File "/Users/Ben/Dropbox/Giraffe/giraffe_server/giraffe/file_handlers/maya.py", line 135, in process_file
    rf = session.query(File).filter_by(f_path=str(ref)).first()
  File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/orm/query.py", line 1211, in filter_by
    for key, value in kwargs.iteritems()]
  File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/orm/util.py", line 597, in _entity_descriptor
    return getattr(entity, key)
  File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/ext/hybrid.py", line 681, in __get__
    return self.expr(owner)
  File "/Users/Ben/Dropbox/Giraffe/giraffe_server/giraffe/model.py", line 133, in f_path
    print "\n\n\n[model.py:File@f_path hybrid_property] returning: ", os.path.join(env['project_dir'], self._f_path)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 66, in join
    if b.startswith('/'):
  File "build/bdist.macosx-10.7-intel/egg/sqlalchemy/sql/expression.py", line 3426, in __nonzero__
    raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined

您的混合属性必须返回一个 sql 表达式;你的没有,它返回一个 python 字符串。

要解决这种情况,请不要在 python 中执行路径连接,而是在 SQL 表达式中执行:

return env['project_dir'] + os.path.sep + self._f_path

这将解决self._f_path.__radd__(result_of_project_dir_plus_os_path_sep),它既可以在查询中使用,也可以用作返回值。

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

在 SQLAlchemy 中查询混合属性 的相关文章

  • 如何在Python中循环并存储自变量中的值

    我对 python 很陌生 所以这听起来可能很愚蠢 我进行了搜索 但没有找到解决方案 我在 python 中有一个名为 ExcRng 的函数 我可以对该函数执行什么样的 for 循环 以便将值存储在独立变量中 我不想将它们存储在列表中 而是
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 如何从 PyCharm 项目中获取我的“exe”[重复]

    这个问题在这里已经有答案了 通过 PyCharm 在 Python 上编写一些项目 我想从中获取一个exe文件 我尝试过 另存为 gt XXX exe 但是 当我尝试执行它时出现错误 此类操作系统不支持该文件 附注 我有win7 x64 它
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • 可以在 TensorFlow 中使用排名相关作为成本函数吗?

    我正在处理偶尔充满异常值的极其嘈杂的数据 因此我主要依靠相关性来衡量我的神经网络的准确性 是否可以明确使用诸如等级相关性 斯皮尔曼相关系数 之类的东西作为我的成本函数 到目前为止 我主要依赖 MSE 作为相关性的代理 我现在面临三个主要障碍
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 如何判断枚举属性是否已设置? C#

    我有一个具有枚举属性的类 如下所示 public class Foo public Color ColorType get set public enum Color Red Green 现在这个类可以像这样初始化 var foo new
  • 错误:permission_manager_qt.cpp(82) 不支持的权限类型:13

    我正在开发具有内置浏览器功能的 python 代码 PyQt 5 13 import sys from PyQt5 QtCore import from PyQt5 QtGui import from PyQt5 QtWidgets imp
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 在径向(树)网络x图中查找末端节点(叶节点)

    给定下图 是否有一种方便的方法来仅获取末端节点 我所说的端节点是指那些具有一个连接边的到节点 我认为这些有时被称为叶节点 G nx DiGraph fromnodes 0 1 1 1 1 1 2 3 4 5 5 5 7 8 9 10 ton
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 如何在Python和Selenium中通过标签名称或id获取元素[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 和 Selenium 获取输入 但它向我显示错误 我该如何解决这个错误 inputElement send keys getStock getStocklFunc 0 Error i
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back

随机推荐

  • Switch Case 语句中出现重复 const 声明错误

    我有以下代码 但收到错误 重复声明 query url switch condition case complex const query url something break default const query url someth
  • 如何正确调用TFS中的GetWorkspace?

    目前当我打电话时GetWorkspace I get ItemNotMappedException例外 但是当我手动迭代工作区时 我可以让我的代码正常工作 这太奇怪了 我想知道我是否应该在调用之前调用一些刷新或其他东西GetWorkspac
  • 使用Python请求时如何获取底层socket

    我有一个 Python 脚本 它使用以下命令创建许多短暂的并发连接requests图书馆 我特别需要找出每个连接使用的源端口 并且我认为我需要为此访问底层套接字 有没有办法通过响应对象来获取它 对于流连接 使用stream True参数 您
  • 使用鼠标旋转画布中的图像

    在我的代码中 我将图像加载到画布中 然后我需要调整大小 旋转和拖动它 我设法实现了拖动和调整大小 如何在这段代码上使用鼠标实现旋转 沿着图像的中心 我的 HTML 页面
  • 我应该使用什么 Java FTP 客户端库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 由于我没有收到对我的问题的
  • C# foreach on IEnumerable vs. List - 元素修改仅对数组持久 - 为什么?

    在 C 中 我注意到如果我在生成的 LINQ 上运行 foreach 循环IEnumerable
  • 从内存流上传到天蓝色存储返回空文件

    我正在使用内存流将 System Drawing Bitmap 写入 Azure 存储 我有正确的凭据 并且天蓝色的所有内容都正确连接 我已经使用输入流成功地将图像上传到 blob 中 所以我认为这一定是我使用内存流对象的方式有问题 经过一
  • 在windows 10 Home上安装Docker,可以吗?

    Docker 需要 win 10 pro 因为它需要一些虚拟化扩展 HyperV 和容器 win 10 Home 可以满足这些要求吗 是的 可以在Windows 10 Home上完成 在win10Home v1809 27 01 2019上
  • 继续中断的 git-push(恢复上传)

    所以我正在做这个相当大的 git push 大约 2 GB 的数据被推送到我的服务器 突然我的 wifi 连接断了 因此 现在在通过慢速连接传输了超过 250 MB 数据后 我必须重新开始 只是冒着整个事情重来的风险 rant 当对 SSH
  • 如何停止 Elmah 日志记录?

    我在 Azure 网站上使用 Elmah MVC 2 和 MVC3 ASP NET 4 5 我已将其设置为通过 web config 记录到网络服务器上的 XML 文件 这一切都有效 但是我想暂时停止它 因为我相信它可能会减慢网络服务器的速
  • 如何找到浏览器中断文本段落的位置

    我需要在浏览器自然在文本段落中添加换行符的位置添加换行符 例如 这是一段很长的文字 n跨越段落中的多行 这是浏览器选择在以下位置中断的段落 n 我需要找到这个位置并插入一个 有谁知道有什么 JS 库或函数可以做到这一点吗 到目前为止 我找到
  • 如何在外部隐藏/显示 ng-grid 列?

    我在用ng grid我想去哪里隐藏 显示外部列按钮点击 我尝试过这个 但它不起作用 scope gridOptions gridScope columns 0 toggleVisible 尝试使用 ng click 指令 你的 html 按
  • 如何告诉 gcc 在 switch/case 语句上不间断地发出警告(或失败)?

    我有一个复杂的switch声明 我忘了加上break在其中之一的末尾cases 这是相当合法的 因此我陷入了下一个case 如果我忽略了 有什么方法可以让 gcc 发出警告 甚至更好 失败 break陈述 我意识到有许多有效的用例 并且我经
  • 将数字 (22,21) 映射到 BigDecimal 时,Hibernate 导致结果精度损失

    我在 Oracle 11g 中将此列映射为 NUMBER 21 20 在 Hibernate 中映射为 Column name PESO precision 21 scale 20 nullable false public BigDeci
  • Workflow Foundation - Literal 仅支持值类型和不可变类型 System.String

    我对名为 MyCodeActivity 的 WF 代码活动进行了以下单元测试 ExpectedException typeof ArgumentException TestMethod public void ShouldRequirePa
  • Chartjs:尝试旋转 y 轴标签

    我尝试过类似的事情maxRotate and rotate 将它们放入scaleLabel等等 我在文档中找不到任何内容 谷歌上的搜索结果也没有多大帮助 var myChart new Chart ctx type line data ch
  • 在 PHP 中包含大量文件(就像基于文件的会话一样)是否不好?

    在阅读了基于文件的 PHP 会话对于性能而言如何不是最好的之后 我开始思考 这是否意味着包含大量文件的 PHP 脚本也很糟糕 因为它包含一个文件 或者这与检索会话数据文件的方式不同 您应该使用 spl autoload register 和
  • 自动跟踪程序执行[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道我们是否可以在任何 C 或 C 应用程序中启用跟踪 例如 使用 gcc 选项或小工具 我将启用跟踪 并将跟踪打印在控制台上或转储到文件中 由
  • C++1z 范围的状态? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 C 委员会中有一个关于范围的研究小组 但我没有关注这个研究组的历史 并且我不确定 C 1z 预计会提供什么样的交付 而且我不使用 boost range 所以我对现有实践没有清晰的看
  • 在 SQLAlchemy 中查询混合属性

    我将文件路径存储为数据库中的相对路径 但随后使用混合属性在映射时将其转换为绝对路径 当我使用此属性查询时 它会抛出错误 这是模型 class File Base tablename files f path Column Unicode 3