2013-03-24 59 views
-5

我有一個mysql表,它存儲了一些sql查詢。在Python中的字符串周圍實施三重引號

的模式是這樣的:

CREATE TABLE `queries` (`qry_id` int(11) NOT NULL AUTO_INCREMENT, 
`qry_text` varchar(2000) COLLATE utf8_unicode_ci NOT NULL, 
`result_table` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, 
`last_run` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`period` int(11) DEFAULT NULL, 
`error` tinyint(1) DEFAULT NULL, 
PRIMARY KEY (`qry_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

例如,一個QRY文字SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'

在Python中,我把一個叫從SQL表QRY海峽。

qry = "SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s' " 

我要的是:

qry = """SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s' """ % (var1, var2) 

如何人爲地添加三重引號QRY和追加%(VAR1,VAR2)它。我需要將qry(以我指定的格式)傳遞給API以運行。謝謝!

+2

你確實知道''「'和'''」「」「''一模一樣'' – 2013-03-24 21:51:11

+0

Tripple引號只是一個形成字符串的語法。它們不是最終生成的字符串的一部分。 – 2013-03-24 21:51:29

+0

我不明白這個問題。 sql表中究竟是什麼?它是否包含查詢:'SELECT * FROM TABLE WHERE COL1 ='%s'和COL2 ='%s''?一個python代碼片段:'qry =「SELECT * FROM TABLE WHERE COL1 ='%s'和COL2 ='%s'」'? – Eric 2013-03-24 21:51:38

回答

0

我不明白你的問題:

def get_dangerous_query(): 
    # do some database access 
    # For a demo, just return what we know the table contains 
    return "SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'" 

qry = get_dangerous_query() % (var1, var2) 

""" VS "只對字符串文字的效果。如果一個字符串來自外部來源,引號是毫無意義的。

+0

埃裏克非常感謝您的幫助。問題解決了。不需要使用「」「 – tonystarkix 2013-03-24 22:15:58

+0

@tonystarkix:如果解決了問題,請記得點擊勾號 – Eric 2013-03-24 22:23:35

相關問題