格式化字符串,以Python方式使用.format进行MySQL查询

时间:2014-12-01 10:52:01

标签: python mysql string formatting

所以我有以下要执行的重命名语句:

"RENAME TABLE `my_table` TO `my_table_temp`, `my_new_table` TO `my_table`,
  `my_table_temp` TO `my_new_table`"

我想使用此查询创建一个函数,以便将其应用于不同的表。 情况是我正在寻找格式化字符串的最佳可读方式。 选择工具似乎是.format方法,显然我不想做这样的事情

"RENAME TABLE '{0}' TO '{1}', '{2}' TO '{3}',
  '{4}' TO '{5}'".format('my_table','my_table_temp','my_new_table','my_table','my_table_temp','my_new_table')

但我想做的是这样的事情

.format('my_table','my_table_temp','my_new_table')

并以某种方式指出应该用每个字符串替换的数字。 为了清楚起见 - 我不想使用6个参数进行字符串格式化,而只需要3个并使每个参数在字符串中重复两次  所以我正在寻求如何实施这一建议的建议。如果这个问题很愚蠢而且显而易见,我会道歉但是我只是希望将代码风格提升到最高水平,即使在这些细节变得太晚之前我发现自己处于阴沟中,使用Python语言编写糟糕的废话

1 个答案:

答案 0 :(得分:2)

In [42]: '{0}, {0}' .format('a')
Out[42]: 'a, a'

In [43]: '{0}, {0}' .format('a', 'b')
Out[43]: 'a, a'

In [44]: '{0}, {1}' .format('a', 'b')
Out[44]: 'a, b'

格式字符串就像这样。所以你只需要这样做: -

"RENAME TABLE '{0}' TO '{1}', '{2}' TO '{0}',\  
'{1}' TO '{2}'".format('my_table','my_table_temp',\
                         'my_new_table','my_table')

>>> 
RENAME TABLE 'my_table' TO 'my_table_temp', 'my_new_table' TO 'my_table',  'my_table_temp' TO 'my_new_table'