часть формата строки питона - PullRequest
1 голос
/ 26 февраля 2012

Я использую Python 2.7 Я пишу какой-то запрос на Python

q = '''
select * from users where user_name = %(user_name)s and  user_email = %(user_email)s
'''

Я хочу отформатировать строку в два этапа, например:

q2 = q % {'user_name':'david'}
q3 = q2 % {'user_email':'sss@sss.com'}

Примернаписал не работает.Python выдает KeyError, есть ли другой вариант для выполнения этих задач?

Ответы [ 2 ]

7 голосов
/ 26 февраля 2012

Используйте правильный API базы данных.

Тем не менее, если вы знаете, какие ключи будут пропущены при первом проходе, вы можете сделать:

>>> "%(a)s and %%(b)s" % {'a': 1}
'1 and %(b)s'
>>> _ % {'b': 2}
'1 and 2'
4 голосов
/ 20 марта 2012

Спасибо за ваш ответ @katrielalex.Я пытался сделать что-то подобное, используя метод string .format() (python2.6 +).Ваш ответ побудил меня придумать следующее.

>>> s="{a} and {{b}}"
'{a} and {{b}}'
>>> s.format( a = 1 )
'1 and {b}'
>>> _.format( b = 2 )
'1 and 2' 

Надеюсь, это поможет всем тем, кто хочет использовать новые функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...