在Python中,如何将两个字符串作为SQL命令分隔的两个字符串连接起来?

在Python中,如何将两个字符串作为SQL命令分隔的两个字符串连接起来?,python,sql-server,string,Python,Sql Server,String,也许,我的问题听起来很奇怪! 但是,我需要Python中的SQL查询: cursor.execute("SELECT TABLE_NAME AS TABLE FROM M_CS_TABLES WHERE SCHEMA_NAME = 'TEST' ") 由于“测试”模式发生更改,我需要这样的查询: schema_name = 'TEST' cursor.execute(" SELECT TABLE_NAME AS TABLE FROM M_CS_TABLES WHERE SCHEMA_NAME

也许,我的问题听起来很奇怪! 但是,我需要Python中的SQL查询:

cursor.execute("SELECT TABLE_NAME AS TABLE FROM M_CS_TABLES WHERE SCHEMA_NAME = 'TEST' ")
由于“测试”模式发生更改,我需要这样的查询:

schema_name = 'TEST'
cursor.execute(" SELECT TABLE_NAME AS TABLE FROM M_CS_TABLES WHERE SCHEMA_NAME = " + str(schema_name))
但这条线的输出将是:

'从模式名称=测试的M_CS_表中选择表名称作为表'

不是:

从M_CS_表中选择表_NAME作为表,其中SCHEMA_NAME='TEST'

需要什么

非常感谢您的帮助。

您可以用另一对引号将“TEST”括起来,即使用“TEST”

更好的是,使用str.format插入“TEST”

您可以用另一对引号将“TEST”括起来,即使用“TEST”

更好的是,使用str.format插入“TEST”


这是相当基本的SQL实践。不要像那样连接字符串

对于您的情况,最好的方法是:

schema_name = 'TEST'
cursor.execute("SELECT TABLE_NAME AS TABLE FROM M_CS_TABLES WHERE SCHEMA_NAME = %s", schema_name)

这是相当基本的SQL实践。不要像那样连接字符串

对于您的情况,最好的方法是:

schema_name = 'TEST'
cursor.execute("SELECT TABLE_NAME AS TABLE FROM M_CS_TABLES WHERE SCHEMA_NAME = %s", schema_name)

这个答案比我的好。谢谢您的回答,但我收到了以下错误:hdbcli.dbapi.ProgrammingError:0,“无效参数:executeSELECT TABLE_NAME AS TABLE FROM M M_CS_TABLES,其中SCHEMA_NAME=%s,TEST,{}@Vahid您使用的是哪个库?”?对于不同的库,有时它们使用不同的占位符。所以不是%s,它可能是?或者{}.@fahyikyong不管库是什么,当我在Python 3.6中运行这段代码时:>>schema_name='TEST',>>SELECT TABLE_name AS TABLE FROM M M M_CS_TABLES WHERE schema_name=%s,schema_name=%s,schema_name,输出是:'SELECT TABLE_name AS TABLE FROM M M M M M M M M M M M_CS_TABLES WHERE schema_name=%s','TEST但当我运行这段代码时:>>schema_name='TEST,>>从模式名={}的M_CS_表中选择表名作为表。formatschema_名,输出为:从模式名='TEST'的M_CS_表中选择表名作为表。此答案比我的好。感谢您的回答,但我收到此错误:hdbcli.dbapi.ProgrammingError:0,'无效参数:executeSELECT TABLE_NAME AS TABLE FROM M M_CS_TABLES,其中SCHEMA_NAME=%s,TEST,{}'@Vahid您在使用哪个库?对于不同的库,有时它们使用不同的占位符。所以不是%s,它可能是?或者{}.@fahyikyong不管库是什么,当我在Python 3.6中运行这段代码时:>>schema_name='TEST',>>SELECT TABLE_name AS TABLE FROM M M M_CS_TABLES WHERE schema_name=%s,schema_name=%s,schema_name,输出是:'SELECT TABLE_name AS TABLE FROM M M M M M M M M M M M_CS_TABLES WHERE schema_name=%s','TEST但当我运行这段代码时:>>schema_name='TEST,>>从模式名={}的M_-CS_表中选择表名作为表。格式模式名,输出是:从模式名='TEST'的M_-CS_表中选择表名作为表:>>>模式名='TEST'>>>blablablabla'%s'%SCHEMA_-NAME,它也有相同的输出:blabla'TEST'我只是把它添加到你的答案中:>>>>schema_name='TEST'>>>blablabla'%s'%schema_name',它也有相同的输出:blablabla'TEST'