Jen*_*ens 5 python database sqlalchemy python-3.x
是否可以在列中查询可以存储在其中的最大可能数据大小(以字节为单位)?例如,假设我使用了一个列
content = Column(LargeBinary)
Run Code Online (Sandbox Code Playgroud)
那么我该如何查询有关的信息content?继检验方法的建议此问题中:
table = File.__table__
field = table.c["content"]
print("max=" + field.type.length)
Run Code Online (Sandbox Code Playgroud)
我得到了一个max=None,而我本max=65535以为这是在考虑field.type=BLOB.我究竟做错了什么?
据我了解,列的最大长度是特定于方言的,并且此信息不存储在 sqlalchemy 源中。不过,根据后端的不同,您可以动态获取它。例如,您可以从表中mysql检索它:INFORMATION_SCHEMA.COLUMNS
q = select(["CHARACTER_MAXIMUM_LENGTH"]).select_from("INFORMATION_SCHEMA.COLUMNS").where(
and_("table_name = '%s'" % File.__tablename__,
"table_schema = '%s'" % schema,
"column_name = '%s'" % column_name))
result = session.execute(q)
print(result.first()[0]) # tested - prints 65535
Run Code Online (Sandbox Code Playgroud)
我敢打赌有一种更漂亮的方式来编写查询。
也可以看看:
field.type.length指用户定义的最大长度,如果未明确提供,则初始化为None:
def __init__(self, length=None):
self.length = length
Run Code Online (Sandbox Code Playgroud)
由于您没有提供length论据,因此您得到了None。
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |