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的一个
使用方法:
data = Column(LargeBinary(length=(2**32)-1))
Run Code Online (Sandbox Code Playgroud)
使LargeBinary创建一个longblob类型
正如开发者对错误报告 LargeBinary类型无法在Mysql中创建LongBlob并创建Blob的响应中指出的:
如果您的问题只是能够呈现 LONGBLOB,而不是对 LargeBinary 默认的 BLOB 存在分歧,那么您当然可以直接使用 sqlalchemy.dialects.mysql.LONGBLOB 类型。如果您想将其与通用 LargeBinary 结合使用,您可以使用 LargeBinary().with_variant(LONGBLOB, "mysql")