格式化字符串的有效方法

Aam*_*nan 0 python string formatting

我正在编写以下sql查询:

"select someTableName.somefield, count(*) from someTableName WHERE someTableName.TimeStamp > %s and someTableName.EndTimeStamp < %s group by someTableName.ProviderUsername;", [from_date, to_data]
Run Code Online (Sandbox Code Playgroud)

这个查询可以在三个表上使用,所以我不想修复表名,所以我在做什么就是这样.

"select %s.somefield, count(*) from %s WHERE %s.TimeStamp > %s and %s.EndTimeStamp < %s group by %s.ProviderUsername;", [tableName, tableName, tableName, from_date, tableName, to_data, tableName]
Run Code Online (Sandbox Code Playgroud)

正如你在上面的查询中看到的,我必须tableName多次使用,所以我需要提供tableName每次出现,有没有最好的方法来实现这一点?

编辑

我不必python 2.6使用str.format由于某种原因无法移动到最新版本的python,我正在使用python version 2.5.2,那么这个环境中最好的解决方案是什么?

ed.*_*ed. 5

您可以在字符串格式中使用命名变量,如下所示:

"select %(tableName)s.somefield, count(*) from %(tableName)s WHERE %(tableName)s.TimeStamp > %(fromDate)s and %(tableName)s.EndTimeStamp < %(to_data)s group by %(tableName)s.ProviderUsername;" %{'tableName':tableName, 'fromDate':fromDate, 'to_data':to_data}
Run Code Online (Sandbox Code Playgroud)