Eh, soru oldukça özetliyor. Benim db aktivitesi çok yoğun bir güncelleme ve ben bir Vakum Analizi programlı olarak yayınlamak istiyorum. Ancak, sorgunun bir işlem içinde yürütülemediğini söyleyen bir hata alıyorum. Bunu yapmanın başka yolu var mı?PostgreSQL için psycopg2 veya sqlalchemy'den "VACUUM ANALYZE <tablename>" yayımlamak mümkün mü?
cevap
Bu, Python DB-API'sindeki bir kusurdur: sizin için bir işlem başlatır. Bunu yapmamalı; Bir işlemin başlatılıp başlatılmayacağı ve ne zaman başlatılacağı programcıya kadar olmalıdır. Bunun gibi düşük seviyeli, çekirdek API'lar geliştiriciyi önemsememeli ve arkamızdaki işlemlere başlamak gibi şeyler yapmamalı. Biz büyük çocuklarız - kendimize işlem başlatabiliriz, teşekkürler.
psycopg2 ile, bu talihsiz davranışı bir API uzantısı ile devre dışı bırakabilirsiniz: connection.autocommit()
numaralı telefonu arayın. Bunun için standart bir API yok, maalesef, bir işlem dışında yürütülmesi gereken komutları vermek için standart olmayan uzantılara bağlı olmanız gerekiyor.
Hiçbir dil siğilsizdir ve bu Python'un biridir. Ben de bundan önce ısırıldım.
sadece 'connection.autocommit' bir işlev değil, bir boole özniteliğidir. Bir işlemin dışındaki sorguları yürütmek için VACUUM'u çalıştırmadan önce 'connection.autocommit = True 'değerini ayarlayabilirsiniz. –
kullanarak Postgres autocommit
modu açabilirsiniz SQLAlchemy en raw_connection (sana bir "ham" psycopg2 bağlantısını verecektir): [? PostgreSQL - kod dışında işlem bloktan VAKUM nasıl çalıştırılacağını]
import sqlalchemy
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
engine = sqlalchemy.create_engine(url)
connection = engine.raw_connection()
connection.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cursor = connection.cursor()
cursor.execute("VACUUM ANALYSE table_name")
ait
- 1. Postgresql çıkışı EXPLAIN ANALYZE dosyası için
- 2. PostgreSQL - VACUUM'u işlem bloğu dışındaki koddan nasıl çalıştırılır?
- 3. Python psycopg2 imleçleri psycopg2 belgelerine
- 4. ? mümkün mü?
- 5. PostgreSQL - veya
- 6. GroupCollection'ı Listeye veya IEnumerable'a dönüştürmek mümkün mü?
- 7. Bir Kümeyi (veya Haritası) "dondurmak" mümkün mü?
- 8. PostgreSQL işlevleri arasında bağımlılık bulmak mümkün mü? Ben</strong></p> <p>PostgreSQL <strong>9.2.10 kullanıyorum
- 9. mümkün mü?
- 10. mümkün mü?
- 11. mümkün mü?
- 12. D3: Bir ekseni küçültmek veya yakınlaştırmak mümkün mü sadece diğerini çevirmek mümkün mü?
- 13. thinktecture identitymanager, mümkün mü?
- 14. Amaçları programlamak mümkün mü?
- 15. Firefox eklentisi için dişli davranış mümkün mü?
- 16. HHVM'yi geçmek mümkün mü?
- 17. fopen - bu mümkün mü?
- 18. C#: Bir IOrderedEnumerable <T> döndürmek mümkün mü?
- 19. Postgresql
- 20. Chrome uzantıları veya web uygulaması yazmak için Clojurescript veya Google Closure kullanmak mümkün mü?
- 21. getImageResource() Android. Mümkün mü?
- 22. IdentityServer3 tümleştirmesi. Mümkün mü?
- 23. Swagger'da, Websockets için API'ler oluşturmak mümkün mü?
- 24. Android için Chrome'da div'ları kaydırmak mümkün mü?
- 25. before_filter: eylem için denetleyici belirtmek mümkün mü?
- 26. Sınıflandırma için gensim doc2vec kullanmak mümkün mü
- 27. Konsol için uzatma yöntemleri yazmak mümkün mü?
- 28. Yansımaları kullanmak için getMethods mümkün mü?
- 29. ToolTipService.ShowOnDisabled = tüm uygulama için true mümkün mü
- 30. Com nesnesi, mümkün mü?
olası yinelenen (http://stackoverflow.com/questions/1017463/postgresql-how-to-run-vacuum-from-code-outside-transaction-block) –
Teşekkürler, bu bir kopya. Bunu nasıl bir işaret olarak işaretleyebilirim? – donatello