8

さて、質問はそれをかなり要約しています。私のデータベース アクティビティは非常に頻繁に更新されるため、プログラムで Vacuum Analyze を発行したいと考えています。ただし、トランザクション内でクエリを実行できないというエラーが表示されます。それを行う他の方法はありますか?

4

2 に答える 2

13

これは Python DB-API の欠陥です。トランザクションが開始されます。そうすべきではありません。トランザクションを開始するかどうか、いつ開始するかは、プログラマ次第です。このような低レベルのコア API は、開発者を子守し、背後でトランザクションを開始するなどのことを行うべきではありません。私たちは大きな男の子です--私たちは自分で取引を開始できます、ありがとう。

psycopg2 では、API 拡張機能である run を使用して、この不幸な動作を無効にすることができますconnection.autocommit = True。残念ながら、これには標準の API がないため、トランザクションの外部で実行する必要があるコマンドを発行するには、非標準の拡張機能に依存する必要があります。

いぼのない言語はありません。これは Python の 1 つです。私も以前これに噛まれたことがあります。

于 2010-10-14T10:04:18.270 に答える