如何确定Python DB-API连接对象是否属于某个DBMS(如PostgreSQL、MySQL)

如何确定Python DB-API连接对象是否属于某个DBMS(如PostgreSQL、MySQL),python,mysql,sql,postgresql,python-db-api,Python,Mysql,Sql,Postgresql,Python Db Api,让驱动程序成为DB-API驱动程序(例如,psycopg2,pymysql),您可以通过connection=driver.connect(…)获取连接对象。如何检查连接对象连接到哪种类型的DBMS:(1)最多是DBMS名称或(2)模块名称 用例: 我需要进行不同SQL语法的特殊查询(例如,PostgreSQL的COPY子句与MySQL的使用bulkINSERT相比)。类似于: type(con)

驱动程序
成为DB-API驱动程序(例如,
psycopg2
pymysql
),您可以通过
connection=driver.connect(…)
获取连接对象。如何检查连接对象连接到哪种类型的DBMS:(1)最多是DBMS名称或(2)模块名称

用例:

我需要进行不同SQL语法的特殊查询(例如,PostgreSQL的
COPY
子句与MySQL的使用bulk
INSERT
相比)。

类似于:

type(con)                                                                                                                                                                  
psycopg2.extensions.connection

type(con)                                                                                                                                                                  
sqlite3.Connection
或者更简短一些:

con.__class__                                                                                                                                                             
psycopg2.extensions.connection

con.__class__                                                                                                                                                             
sqlite3.Connection
大概是

type(con)                                                                                                                                                                  
psycopg2.extensions.connection

type(con)                                                                                                                                                                  
sqlite3.Connection
或者更简短一些:

con.__class__                                                                                                                                                             
psycopg2.extensions.connection

con.__class__                                                                                                                                                             
sqlite3.Connection

答案需要一些解释。代码就是解释。没有必要再重复代码所显示的内容而添加赘言。没有答案需要解释代码所做的事情,第一个示例是检查可以检查的连接变量的类型是否有用,写下你自己的答案,而不是批评提问者已经理解的答案。获得模块名称是一个很好的解决方案。最好,我希望获得DBMS名称,而不需要将module/class/type映射到DBMS字符串。没有必要再重复代码所显示的内容而添加赘言。没有答案需要解释代码所做的事情,第一个示例是检查可以检查的连接变量的类型是否有用,写下你自己的答案,而不是批评提问者已经理解的答案。获得模块名称是一个很好的解决方案。最好是在不需要将模块/类/类型映射到DBMS字符串的情况下获取DBMS名称。在创建连接时,您知道类型,并且可以选择查询。问题是,将连接对象传递给另一个函数时。然后需要传递另一个参数来描述DBMS名称,这是不可取的。附加到连接的属性最好。这听起来像是一个。您应该已经知道要使用的DB-API以及要运行的操作。请为您的用例发布示例代码,以说明您的实际问题。不太可能,@nbk在理解此问题方面做得很好,然后提供了满足用例的解决方案。在您创建连接时,您知道类型,并且可以选择查询问题是当您将连接对象传递给另一个函数时。然后需要传递另一个参数来描述DBMS名称,这是不可取的。附加到连接的属性最好。这听起来像是一个。您应该已经知道要使用的DB-API以及要运行的操作。请为您的用例发布示例代码来说明您真正的问题。不太可能,@nbk在理解这个问题方面做得很好,然后提供了一个满足用例的解决方案。