有没有办法可靠地获取对象的包名?我试图以编程方式确定连接器是来自mysqldb,pyscopg2,cx_oracle还是pymssql。我以前一直在使用conn.__class__
和正则表达式,但是当MySQLdb打破了这种模式时,我偶然发现了。
psycopg2:<type 'psycopg2.extensions.connection'>
oracle:<type 'cx_Oracle.Connection'>
pymssql:<type 'pymssql.Connection'>
mysqldb:MySQLdb.connections.Connection
我想知道是否有内置的python方法来查找课程&#39;包。理想情况下,这只会返回psycopg2
,cx_Oracle
,pymssql
或MySQLdb
是的,谢谢你,Get fully qualified class name of an object in Python是我搜索时出现的第一件事。 psycopg2,cx_oracle和pymssql都返回AttributeError: 'Connection' object has no attribute '__module___'
答案 0 :(得分:0)
使用inspect.getmodule()
。
如果模块不合适,您可以在获得模块后检查模块的__package__
。
另一种选择是使用inspect.getfile()
并搜索已知的字符串。