gpt4 book ai didi

python - 通过 SQLAlchemy 插入 MySQL 时截断太长的 varchar

转载 作者:行者123 更新时间:2023-11-28 20:41:46 24 4
gpt4 key购买 nike

我正在通过 SQLAlchemy 模型将数据插入 MySQL。最近,此应用针对配置了 STRICT_TRANS_TABLES 的 MySQL 运行,应用偶尔会因Data too long for column错误而失败。

我知道我可以为我的 session 禁用 strict sql_mode(就像这里的 MySQL too long varchar truncation/error setting ),

但我很好奇 SQLAlchemy 是否可以强制列数据的最大 String() 长度。文档说,String() 长度仅适用于 CREATE TABLE。我的问题:

  1. 是否可以在 SQLAlchemy 中强制执行最大长度(截断太长的字符串)?
  2. 我可以为个别列或仅为所有表/数据库中的所有列设置它吗?

最佳答案

如果您想通过在 python/sqlalchemy 端自动截断它来enfoce 最大长度,我认为使用 Simple Validators是实现这一目标的最简单方法:

class MyTable(Base):
__tablename__ = 'my_table'

id = Column(Integer, primary_key=True)
code = Column(String(4))
name = Column(String(10))

@validates('code', 'name')
def validate_code(self, key, value):
max_len = getattr(self.__class__, key).prop.columns[0].type.length
if value and len(value) > max_len:
return value[:max_len]
return value

关于python - 通过 SQLAlchemy 插入 MySQL 时截断太长的 varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com