SQLAlchemy——我可以在 DDL 中将空字符串映射到 null 吗?我想要一个可为空的整数列在插入或更新时将 '' 转换为 NULL

2024-04-02

我有一个 SQLAlchemy 模型,其中有一个从 HTML 表单填充的整数列(我正在使用 Flask 和 WTForms-alchemy,并且我试图避免在路由中编写自定义代码)。如果用户没有在表单上输入该整数的值,则从表单填充对象的代码最终会尝试为该列放入一个空字符串,并且 MySQL 会抱怨这不是一个整数值。为了帮助人们搜索:我开始遇到的错误Incorrect integer value: '' for column ....

我不想使用sql_mode=''hack,人们建议这样做,以便让 MySQL 回到旧的行为,只要给它不正确的数据就进行猜测,因为我无法控制最终将使用的 MySQL 服务器。

我想要的是类似于默认列规范的东西,除了在没有任何内容传入时指定默认值,我想拦截尝试放入空字符串并将其替换为 None ,我认为这会被转换为当它进入数据库时​​为 null。

有没有办法在模型定义中做到这一点?我意识到这可能会导致性能下降,但吞吐量在此应用程序中并不是什么大问题。


我找到了一个方法。这validates装饰器可以在传入的过程中更改值。我是这样做的:

from sqlalchemy.orm import validates

class Task(Base):
    __tablename__ = 'task'

    id = Column(INTEGER(11), primary_key=True)

    time_per_unit = Column(INTEGER(11))


    @validates('time_per_unit')
    def empty_string_to_null(self, key, value):
        if isinstance(value,str) and value == '':
            return None
        else:
            return value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLAlchemy——我可以在 DDL 中将空字符串映射到 null 吗?我想要一个可为空的整数列在插入或更新时将 '' 转换为 NULL 的相关文章

随机推荐

  • 实际上使用 UIDatePickerModeCountDownTimer 作为计时器

    我只是想制作一个计时器 我想用UIDatePickerModeCountDownTimer的模式UIDatePicker 这样当用户只需在选择器中选择 15 分钟时 他们就会返回到一个屏幕 该屏幕在标签中显示 15 分钟的值 然后他们可以从
  • 具有多表继承的父类上的 Django post_save 信号

    在 Django 中 如果您有使用多表继承的模型 并且您在父类上为 post save 信号定义了一个接收器 那么当保存子类的实例时 是否会调用该接收器函数 借个例子来自另一个问题 https stackoverflow com quest
  • 在 R 中将完整年龄从字符转换为数字

    我有一个数据集 其中人们的完整年龄为 R 中的字符串 例如 10 年 8 个月 23 天 我需要将其转换为有意义的数字变量 我正在考虑将其转换为有多少天人的年龄 这很困难 因为月份有不同的天数 因此 最好的解决方案可能是创建一个双变量 将年
  • 如何检测android中的屏幕覆盖?

    在某些设备中 当屏幕覆盖应用程序正在运行时 单击 VPN 权限确定按钮时不会执行任何操作 所以我想检查屏幕覆盖应用程序是否正在运行 并创建 检测到屏幕覆盖 对话框 有没有办法在android中以编程方式检测屏幕覆盖 示例代码 public
  • CATALINA_OPTS 与 JAVA_OPTS - 有什么区别?

    我试图找出 Apache Tomcat 变量之间的区别 CATALINA OPTS and JAVA OPTS in SO http stackoverflow com并惊讶地发现这里还没有发布问题 答案 所以我想在发现差异后在这里分享 带
  • 在 Haskell 中实现记忆功能

    我对 Haskell 相当陌生 我正在尝试实现一个基本的记忆功能 它使用Data Map存储计算值 我的示例是欧拉项目问题 15 其中涉及计算 20x20 网格中从一个角到另一个角的可能路径数 这是我到目前为止所拥有的 我还没有尝试编译 因
  • 如果未显式提交或回滚,则自动提交事务

    我们使用 Weblogic 服务器 并在连接到 Oracle 10g 时始终将 autoCommit 设置为 false 我想知道 Weblogic 中是否有一个设置 如果未从应用程序代码中显式调用提交或回滚 它将自动提交事务 我听说 We
  • VS2013 Intellisense 不理解 decltype

    是否有补丁 官方或非官方 可以让 IntelliSense 停止报告每次使用decltype作为语法错误 它编译得很好 所以我知道decltype是支持的 但是到处都是红色波浪线会让人分心 而且很难找到actual代码中的错误 每次编译都会
  • 重新排序表列?

    有谁知道使用 jQuery 对表列重新排序的方法吗 我的意思不是排序 我的意思是在表中向左或向右动态移动整个列 我知道优秀的可拖动插件 http www danvk org wp dragtable 但我不需要允许用户移动列的东西 我需要一
  • 网络音频 API 故障/失真问题

    我是网络音频 API 的新手 并制作了一个简单的合成器来了解细节 问题是 在大量声音输入后 我的音频会失真很多 因此 如果我施加大量频率 它就会失真 任何了解 API 的人都可以快速浏览一下我的代码 看看是否存在任何重大错误 遗漏 可以在
  • 将升压套接字存储在向量中[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 这是代码 我收到以下错误 In member function void socks4Server listener i
  • 在iOS中,如何根据环境(dev、hom、prod)更改启动屏幕图像?

    我有一个带有图像的启动屏幕 到目前为止运行良好 但现在我有 3 个模式 dev hom 和 prod 我想知道如何根据构建时选择的模式更改启动屏幕图像 EDIT 我想到了两种选择 但我不知道哪一种最好 选项 1 创建两个 Storyboar
  • 在 iOS 中将应用程序中的 cookie 设置为 Safari

    在我的应用程序中 我需要实现下一个功能 当用户登录应用程序时 它 应用程序 需要将某些网站的 cookie 或任何其他数据 保存到移动 Safari 目标是当用户下次在 Safari 中打开该网站时不再登录 文档 https develop
  • 如何使用 matplotlib/python 绘制地理数据

    我正在尝试使用不同的库在 python 上绘制多边形 但这些库都不适合我 我试过vincent https github com wrobstory vincent Shapely https pypi python org pypi Sh
  • Python pip:ImportError 无法从“six”导入名称“ensure_str”。在多个 pip 命令上

    当我第一次想安装 python3 的 tqdm 包时 我注意到出了问题 跑步pip install tqdm我收到了 ImportError cannot import name ensure str from six home carl
  • 如何在 QtQuick Controls 2 中将对话框置于屏幕中央?

    我的所有对话框都出现在屏幕的左上角而不是中心 让对话框自动正确放置的最佳方法是什么 import QtQuick 2 7 import QtQuick Controls 2 2 ApplicationWindow id mainWindow
  • R,knitr 不尊重块和文本的顺序

    想象一下我编织了这个 Rnw 文件 documentclass article begin document Table1 lt
  • 在 C# 中将 RGB 数组转换为图像

    我知道每个像素的 rgb 值 如何在 C 中根据这些值创建图片 我见过一些这样的例子 public Bitmap GetDataPicture int w int h byte data Bitmap pic new Bitmap this
  • 平均情况与摊销分析之间的差异

    我正在阅读一篇关于算法摊销分析的文章 以下是一段文字片段 摊销分析与平均情况分析类似 因为它是 关注一系列操作的平均成本 然而 平均情况分析依赖于概率假设 关于数据结构和操作 以便计算 算法的预期运行时间 因此它的适用范围是 取决于关于概率
  • SQLAlchemy——我可以在 DDL 中将空字符串映射到 null 吗?我想要一个可为空的整数列在插入或更新时将 '' 转换为 NULL

    我有一个 SQLAlchemy 模型 其中有一个从 HTML 表单填充的整数列 我正在使用 Flask 和 WTForms alchemy 并且我试图避免在路由中编写自定义代码 如果用户没有在表单上输入该整数的值 则从表单填充对象的代码最终