相关疑难解决方法(0)

Postgres约束确保存在多列中的一列?

向PostgreSQL添加约束以检查一列(来自一组列)是否包含非空值的好方法是什么?

更新:我可能想要使用Create TableAlter Table中check详细说明的表达式.

更新:我正在查看可用的功能.

更新:仅供后台使用,这是我目前正在使用的Rails验证逻辑:

validate :multi_column_validation
def multi_column_validation
  n = 0
  n += 1 if column_1
  n += 1 if column_2
  n += 1 if column_3
  unless 1 == n
    errors.add(:base, "Exactly one column from " +
      "column_1, column_2, column_3 must be present")
  end
end
Run Code Online (Sandbox Code Playgroud)

要清楚,我在这里寻找的是PSQL,而不是Ruby.我只想展示我正在使用的逻辑,因为它比枚举所有"真值表"的可能性更紧凑.

postgresql constraints

23
推荐指数
4
解决办法
8530
查看次数

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

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

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

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

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

python sqlalchemy wtforms

5
推荐指数
1
解决办法
5134
查看次数

如何在 Sqlalchemy ORM 中检查表中两个特定字段中的至少一个是否为 NOT NULL?

我有两个字段:

class Person(base):
     field1 = Column(String(32), unique=True, nullable=True)
     field2 = Column(String(128), unique=True, nullable=True)
     field3 = ...
     ...
Run Code Online (Sandbox Code Playgroud)

我需要创建一个约束,以检查是否至少有一个[field1, field2]可用。我想我需要使用CheckConstraint,但我没有得到结果。有任何想法吗?

python sql orm sqlalchemy check-constraints

3
推荐指数
1
解决办法
767
查看次数