Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字符串格式错误_Python_String_Formatting - Fatal编程技术网

Python字符串格式错误

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中绑定一个参数:

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提到的准备语句是最安全的)。