我可以看到BOOLEAN
覆盖__visit_name__
class BOOLEAN(Boolean):
__visit_name__ = 'BOOLEAN'
Run Code Online (Sandbox Code Playgroud)
控制调度员选择的访客方法
def _compiler_dispatch(self, visitor, **kw):
visit_attr = 'visit_%s' % self.__visit_name__
try:
meth = getattr(visitor, visit_attr)
Run Code Online (Sandbox Code Playgroud)
在MS SQL的情况下,访问者MSSQLCompiler
来自GenericTypeCompiler
.现在,MSSQLCompiler
覆盖visit_boolean
:
def visit_boolean(self, type_, **kw):
return self.visit_BIT(type_)
Run Code Online (Sandbox Code Playgroud)
但它不会覆盖visit_BOOLEAN
,因此列类型Boolean
解析为"BIT",并且BOOLEAN
(通过超类)解析为"BOOLEAN",这不是有效的MS SQL类型.
为什么这种不一致?是否MSSQLCompiler
需要覆盖visit_BOOLEAN
,或者是否有我遗漏的东西?有什么区别,概念,之间Boolean
和BOOLEAN
类型?
通用类型指定可以读取,写入和存储特定类型的Python数据的列.SQLAlchemy将在发出
CREATE TABLE
语句时选择目标数据库上可用的最佳数据库列类型.
此类类型是指属于SQL标准的一部分,或者可能位于数据库后端子集中的类型.与"通用"类型不同,SQL标准/多供应商类型无法保证在所有后端上工作,并且只适用于那些通过名称明确支持它们的后端.也就是说,类型将始终在DDL中发出其确切名称
CREATE TABLE
.
没有矛盾,因为它们是不同的东西.
归档时间: |
|
查看次数: |
421 次 |
最近记录: |