sqlalchemy中的Column(UnicodeText)数据截断

时间:2012-06-26 06:06:27

标签: python mysql sqlalchemy pyramid

我有这样的模型

class mymodel(Base):
    """
    Unprocessed DataSource model
    """
    __tablename__ = 'mymodel_data'
    mod_id = Column(Integer, primary_key=True)
    mod_name = Column(Unicode(150))
    user_id = Column(Integer, ForeignKey('users.user_id'))
    all_data = Column(UnicodeText)

all_data是一个很长的json文本,它的大小可能非常长。

有时数据会被截断,而我得到的错误是

Warning: Data truncated for column 'all_data' at row 1

我需要确保截断没有发生,或者我需要一个解决方法。有办法吗?我试着阅读this article,但我无法弄清楚要做什么。

我正在使用mysql

2 个答案:

答案 0 :(得分:3)

我想在MySQL上,默认使用TEXT类型。它有64K字符的限制。 SQLAlchemy将选择一个不同的类型来匹配给定的长度参数。由于MEDIUMTEXT具有16M的任意限制,而LONGTEXT(最多4G字符)仅需要1个字节,因此您可以始终对这些列使用LONGTEXT(或使用UnicodeText(length=2**31))。

答案 1 :(得分:1)

猜猜我弄明白了。我可以为unicodeText参数指定一个长度。对不起noob问题