使用Python在SQL查询中传递数据库名称变量

使用Python在SQL查询中传递数据库名称变量,python,sql,sql-server,Python,Sql,Sql Server,我的配置文件包含如下数据库详细信息: config = configparser.ConfigParser() config.read("C:/configsql.ini") _SERVER_NAME = config['SQL']['SERVER_NAME'] _DATABASE = config['SQL']['DATABASE'] _USERNAME = config['SQL']['USERNAME'] _PASSWORD = config['SQL']['PAS

我的配置文件包含如下数据库详细信息:

config = configparser.ConfigParser()            
config.read("C:/configsql.ini")
_SERVER_NAME = config['SQL']['SERVER_NAME']
_DATABASE = config['SQL']['DATABASE']
_USERNAME = config['SQL']['USERNAME']
_PASSWORD = config['SQL']['PASSWORD']
如何在通过python执行的SQL查询中使用
\u数据库
变量。目前,SQL查询是用数据库名-
TEST
硬编码的

下面是我的python代码中使用的两种类型的SQL查询:

connsql = self.sql_connection()
query = "select distinct top 2 filing_id, StatusIndicator from [TEST].[dbo].[FILE] where ID = ?"  
resultset = connsql.cursor().execute(query,values).fetchall()
connsql.cursor().commit()
connsql.close()
以及

如何在通过python执行的SQL查询中使用_数据库变量

通常应在
sql\u连接中指定数据库,以便在查询中使用由两部分组成的名称,而不是由三部分组成的名称

如何在通过python执行的SQL查询中使用_数据库变量


通常应在
sql\u连接中指定数据库,以便在查询中使用由两部分组成的名称,而不是由三部分组成的名称

这回答了你的问题吗?该方法适用于我的第一种查询格式,其中
query=“”
,但是,如何使其适用于第二种查询格式,其中有3个引号
query=''''''
。由@sugar2code链接的解决方案应该只在您不接受用户输入作为数据库名称的情况下使用-它完全可以注入。这是否回答了您的问题?该方法适用于我的第一个查询格式,其中
query=“”
,但是,如何使其适用于第二个查询格式,其中有3个引号
query=''”
由@sugar2code链接的解决方案只应在您不接受用户输入作为数据库名称的情况下使用-它是完全开放的。
query ='''
        IF EXISTS(select [file_name], [file] from [TEST].[dbo].[FILE] where ID = ? and TypeID = 1)
        BEGIN 
            select [file_name], [file] from [TEST].[dbo].[FILE] where ID = ? and TypeID = 1
        END
        ELSE
        BEGIN 
            SELECT - 1
        END                   
      '''
values = (Id,Id)
results = connsql.cursor().execute(query, values).fetchall()