0

同じDB接続から生成された複数のカーソル(たとえば、それぞれが異なるスレッドにある)がある場合、1つのカーソル(たとえば、Python:cursor.execute('COMMIT'))でコミットすると、内の別のカーソルで進行中のトランザクションに影響します同じ接続?もしそうなら、このようなクロスカーソルの問題を回避するために、DB接続ごとに常に1つのカーソルだけを持つべきですか?(また、ご存知の場合、これはGoogle Cloud SQLにも当てはまりますか?)

アドバイスをよろしくお願いします。

4

2 に答える 2

4

おそらく。MySQLdb-属性を1に指定しますthreadsafety。これは、手動同期なしで複数のスレッドで接続(したがってカーソル)を共有してはならないことを意味します。

何らかの形式の接続プールを使用することをお勧めします。

于 2012-05-09T08:45:02.440 に答える
1

Google Cloud SQLでは、DB接続ごとに一度に1つのカーソルのみを使用する必要があります。サーバー側では、接続ごとに1つのデータ構造があり、現在のトランザクション/クエリを追跡します。複数のカーソルがある場合、それらは互いに踏みます。

すべてのhttpリクエストの最初に接続を開き、最後に接続を閉じることをお勧めします。そのためのサンプルコードを次に示します。

于 2012-05-14T16:26:35.637 に答える