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

Kni*_*nio 4 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())
Run Code Online (Sandbox Code Playgroud)

但是,当我创建该表(使用Base.metadata.create_all(engine)),然后DESCRIBE tbl;在mysql中时,得到以下信息:

mysql> describe logs;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
...
| data         | blob        | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

预期结果:我希望这是longblobmysql中的一个,而不是blob限于64kB的一个

Kni*_*nio 7

使用方法:

data = Column(LargeBinary(length=(2**32)-1))
Run Code Online (Sandbox Code Playgroud)

使LargeBinary创建一个longblob类型


Sha*_*dow 5

正如开发者对错误报告 LargeBinary类型无法在Mysql中创建LongBlob并创建Blob的响应中指出的:

如果您的问题只是能够呈现 LONGBLOB,而不是对 LargeBinary 默认的 BLOB 存在分歧,那么您当然可以直接使用 sqlalchemy.dialects.mysql.LONGBLOB 类型。如果您想将其与通用 LargeBinary 结合使用,您可以使用 LargeBinary().with_variant(LONGBLOB, "mysql")