Python:如何从两个模块导入同名类?
我正在写一个Python程序,用来在不同的数据库之间进行细粒度的同步。
我使用了SQLAlchemy和一个叫做sqlautocode的模块,用于检查数据库和生成模式类。
我有两个数据库需要同步,它们的表名是一样的,而sqlautocode生成的类名也就相同了。
我需要给这些类加上任意的前缀来区分,我在想可以这样做:
from module_name import * with prefixes
否则我就得用“as”修饰符来导入每个类的名字,像这样:
from module_name import x as master_x
在进行一些复杂的硬编码名称提取程序和控制列表的操作之前,我想先听听大家的建议。
更新:解决方案是sqlautocode的一个选项:--table-prefix=TABLE_PREFIX
谢谢大家!
2 个回答
1
在这种情况下,你不需要从模块中导入类。你只需要导入这两个模块。像这样:
import moda, modb
moda.MyClass()
modb.MyClass()
不过,这样做就不能使用一些很酷的工具,比如 pyflakes
。所以我会选择稍微麻烦一点的方法(不过你只需要做一次,对吧?),就是用重命名的方式导入类。我非常支持 from x import something
这种写法,因为它能让你尽早发现错误。
8
只需要导入模块,不要试着从里面提取名字。其实,from X import Y
这种写法应该偶尔用一下就好。
import module_a
import module_b
module_a.x
module_b.x