-5

いくつかのSQLクエリを格納するmysqlテーブルがあります。

スキーマは次のようなものです。

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;

たとえば、1つのqryテキストはSELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'

Pythonでは、SQLテーブルからqryというstrを取得しました。

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に渡す必要があります。ありがとう!

4

1 に答える 1

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"は、文字列リテラルにのみ影響します。文字列が外部ソースからのものである場合、引用符は完全に無意味です。

于 2013-03-24T22:06:27.337 に答える