Python字符串格式错误
我正在尝试在SQL中绑定一个参数:Python字符串格式错误,python,string,formatting,Python,String,Formatting,我正在尝试在SQL中绑定一个参数: sql = "SELECT COLUMN_NAME,DATA_TYPE FROM USER_TAB_COLS WHERE TABLE_NAME=UPPER(:TABLENAME)" print 'TABLENAME=',TABLENAME sqlqry = sql %(TABLENAME) 但是获取字符串格式错误: TypeError: not all arguments converted during string formatting 可能是什么问题
sql = "SELECT COLUMN_NAME,DATA_TYPE FROM USER_TAB_COLS WHERE TABLE_NAME=UPPER(:TABLENAME)"
print 'TABLENAME=',TABLENAME
sqlqry = sql %(TABLENAME)
但是获取字符串格式错误:
TypeError: not all arguments converted during string formatting
可能是什么问题?字符串中缺少占位符
你想用
%s
替换字符串sql
中的:TABLENAME
,我怀疑。你真的应该发布更多的代码,以使其完全清晰,但字符串“sql”似乎不包含任何要替换的%-代码。您试图替换一个值,但并非所有值都被使用(换句话说,没有任何值被替换)。您应该使用%s而不是:TABLENAME。您期望得到什么?我在您的字符串中没有看到任何有效的格式说明符。如果您使用的是sqlite3
,我建议使用准备好的语句。我认为%将替换TABLENAME值如果您想在替换中使用关键字,请将:TABLENAME
替换为%(TABLENAME)s
,然后像sql%那样替换{'TABLENAME':TABLENAME}
。如果您不关心关键字,只需使用下面提到的%s
(但是这会引入SQL注入风险,@Whymarrh提到的准备语句是最安全的)。