相关疑难解决方法(0)

SQLAlchemy布尔与BOOLEAN

我可以看到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,或者是否有我遗漏的东西?有什么区别,概念,之间BooleanBOOLEAN类型?

sqlalchemy

2
推荐指数
1
解决办法
421
查看次数

标签 统计

sqlalchemy ×1