SqlAlchemy:如何在mysql中创建LONGBLOB列?

时间:2017-05-04 19:53:07

标签: python mysql sqlalchemy

使用sqlalchemy和mysql-python,我有这个表:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Index, LargeBinary
Base = declarative_base()
class Tbl(Base):
     __tablename__ = 'tbl'
     ...
     data = Column(LargeBinary())

但是,当我创建此表(使用Base.metadata.create_all(engine)),然后在mysql中创建DESCRIBE tbl;时,我得到了这个:

mysql> describe logs;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
...
| data         | blob        | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

预期结果:我希望它在mysql中是longblob,而不是blob,限制为64kB

2 个答案:

答案 0 :(得分:5)

使用:

data = Column(LargeBinary(length=(2**32)-1))

导致LargeBinary创建longblob类型

答案 1 :(得分:1)

作为开发人员对错误报告的回应 LargeBinary type fails to create LongBlob in Mysql and creates Blob指出:

  

如果您的问题只是能够渲染LONGBLOB,而不是   对于LargeBinary默认BLOB的不同意见,你当然可以使用   sqlalchemy.dialects.mysql.LONGBLOB类型直接。如果你想   将此与您可以使用的通用LargeBinary相结合   LargeBinary()。with_variant(LONGBLOB," mysql")