如何确定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的使用bulkINSERT
相比)。类似于:
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在理解这个问题方面做得很好,然后提供了一个满足用例的解决方案。