2012-02-26 36 views
1

我使用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':'[email protected]'} 

我寫的例子不起作用。 python拋出KeyError 是否有任何其他選項來執行這些任務?

+6

這不是你如何在Python中做數據庫。 – 2012-02-26 17:55:49

回答

7

使用適當的數據庫API。

這就是說,如果你知道哪些鍵會在第一遍被省略,你可以這樣做:

>>> "%(a)s and %%(b)s" % {'a': 1} 
'1 and %(b)s' 
>>> _ % {'b': 2} 
'1 and 2' 
+0

這個技巧很酷。我爲大多數變量使用數據庫API。我用它有意義,但感謝您的建議 – user1087310 2012-02-26 18:39:43

3

謝謝您的回答@katrielalex。我一直在嘗試使用字符串.format()方法(python2.6 +)來做類似的事情。你的回答引導我拿出以下內容。

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

我希望它可以幫助所有那些誰想要使用的新功能。