将 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
,而不是限制为64kB的blob
使用:
data = Column(LargeBinary(length=(2**32)-1))
导致 LargeBinary 创建
longblob
类型
作为开发者对错误报告的回应 LargeBinary类型在Mysql中创建LongBlob失败并创建Blob指出:
如果您的问题只是能够渲染 LONGBLOB,而不是 对于 LargeBinary 默认的 BLOB 存在分歧,您当然可以使用 直接使用 sqlalchemy.dialects.mysql.LONGBLOB 类型。如果你想 将此与您可以使用的通用 LargeBinary 结合起来 LargeBinary().with_variant(LONGBLOB, "mysql")
因为我们在 sqlalchemy 方言中有
MEDIUMBLOB
,您可以将其用于 MySQL:
from sqlalchemy.dialects.mysql import MEDIUMBLOB,LONGBLOB,TINYBLOB
data = Column(LONGBLOB)