擅长:python、mysql、java
<p>这有点像黑客,但一个选择是将导入包装在try/except块中。如果postgres库不可用,并且用户尝试使用db_类型的postgres初始化db对象,那么您可能会针对缺少的导入引发异常</p>
<p>我最初的回答不起作用,但我把它留在这里,这样评论才有意义</p>
<p><s>
<strong>一种方法是为每种类型的数据库创建一个类。主DB类不需要可选的导入,postgres DB类需要postgres库,但不需要mysql库</s></p>
<pre><code>class DB:
def __init__(self, db_type):
if db_type == 'postgres':
self.db = PostgresDB()
elif db_type == 'mysql':
self.db == MySQLDB()
...
def get_connection(self):
return self.db.conn
</code></pre>
<pre><code>import postgresLibrary
class PostgresDB:
def __init__(self):
self.conn = PostgresConnection
</code></pre>
<p/>