Sqlalchemy自动加载似乎一次加载多个模式

Sqlalchemy自动加载似乎一次加载多个模式,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我有一个现有的中子lbaas数据库来重建ORM 然后我使用Sqlalchemy自动加载数据库中的一些表。我发现它不仅自动加载了我定义为类的表,而且还将一些其他表模式自动加载到元数据对象中 例如,我的代码是: 类负载平衡器(基本): __tablename_uuu='lbaas_loadbalancers' __表_args_uu={'autoload':True} 类侦听器(基): __tablename_uuu='lbaas_侦听器' __表_args_uu={'autoload':True}

我有一个现有的中子lbaas数据库来重建ORM

然后我使用Sqlalchemy自动加载数据库中的一些表。我发现它不仅自动加载了我定义为类的表,而且还将一些其他表模式自动加载到元数据对象中

例如,我的代码是:

类负载平衡器(基本):
__tablename_uuu='lbaas_loadbalancers'
__表_args_uu={'autoload':True}
类侦听器(基):
__tablename_uuu='lbaas_侦听器'
__表_args_uu={'autoload':True}
loadbalancer\u id=列(“loadbalancer\u id”)
#类池(基):
#_uuutablename_uuuu='lbaas\u pools'
#_uuu表_u参数uuuu={'autoload':True,'extend_uexisting':True}
#loadbalancer\u id=列(“loadbalancer\u id”)
#healthmonitor\u id=列(字符串,ForeignKey('lbaas\u healthmonitors.id'))
#成员=关系(“成员”)
#healthmonitor=关系(“监视器”,uselist=False)
#班长(基本):
#_uuutablename_uuuu='lbaas\u healthmonitors'
#_uuu表_u参数uuuu={'autoload':True}
#班级成员(基本):
#_uuutablename_uuuu='lbaas\u成员'
#_uuu表_u参数uuuu={'autoload':True}
正如您所看到的,上面的类,我对其中一些进行了评论

当我运行代码时,我通过方法
models.metadata.sorted\u tables
打印元数据对象中的表。如下图所示:

对于models.metadata.sorted_表中的t:
打印t.name
它给了我这些表名:

口味
lbaas_健康监测器
标准属性
网络
港口
lbaas_负载平衡器
lbaas_池
lbaas_听众
我们可以看到名称
flavors
lbaas\u healthmonitors
lbaas\u healthmonitors
standardattributes
网络
端口
lbaas\u池
,我在代码中没有将它们定义或引用为Python类。它们似乎也是由Sqlalchmey自动加载的

因此,关于上述代码有三个相关问题:

第一个问题是:

我猜
自动加载:True
将随机加载比我们预期更多的模式。是这样吗

第二个问题是:

如果它自动加载一些模式(未定义类),如上表中的
lbaas\u pools
。然后,我想定义一个
类池(基本)
,其中包含
loadbalancer\u id
healthmonitor\u id
,我必须在编写Python类时设置
'extend\u existing':True
。是这样吗?我参考了这个答案
https://stackoverflow.com/questions/31595625/sqlalchemy-doesnt-autoload-all-my-columns

第三个问题是:

如果以上两种猜测都是正确的。因此,开发人员何时知道在他们的代码中使用
'extend_existing':True
。因为Sqlalchmey可能自动加载元数据对象中已有的架构,所以我们需要设置
'extend\u existing':True
,但有时它还没有自动加载架构,所以我们不需要设置
'extend\u existing':True

请帮忙,非常感谢