2

ステートメントを実行SETして変数を割り当て、「トランザクション」を使用して mySQL セッションでそれを維持できますが、次のDATE_FORMATような関数を含めると:

cursor.execute("SET @dowToday:=CAST( DATE_FORMAT( NOW(), '%w' ) AS UNSIGNED);")

Djangoはそれを不平を言う

実行中の/usr/lib/pymodules/python2.6/MySQLdb/cursors.pyのフォーマット文字列の引数が不十分、151行目

CAST を削除したり、引用符をいじったりエスケープしたりすることは役に立ちません。

考え?

4

3 に答える 3

1

前回の回答の要点を完全に見逃していました。これは Django カーソルです。「標準のPython」ではありません。

ドキュメントによると:

https://docs.djangoproject.com/en/dev/topics/db/sql/

クエリにリテラルのパーセント記号を含めたい場合は、パラメーターを渡す場合にそれらを 2 倍にする必要があることに注意してください。

cursor.execute("SELECT foo FROM bar WHERE baz = '30%%' and id = %s", [self.id])

これが機能しない場合は、単純で愚かなトリックにフォールバックできると思います。

cursor.execute("SET @dowToday:=CAST( DATE_FORMAT( NOW(), '%sw' ) AS UNSIGNED);", ['%'])

は、引数として渡された%sものに置き換えられます...%

于 2013-08-09T08:49:34.493 に答える