使用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
答案 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")