खैर, सवाल काफी संक्षेप में है। मेरी डीबी गतिविधि बहुत अद्यतन गहन है, और मैं प्रोग्रामेटिक रूप से वैक्यूम विश्लेषण जारी करना चाहता हूं। हालांकि मुझे एक त्रुटि मिलती है जो कहती है कि लेनदेन के भीतर क्वेरी निष्पादित नहीं की जा सकती है। क्या ऐसा करने का कोई और तरीका है?क्या पोस्टग्रेएसक्यूएल के लिए psycopg2 या sqlalchemy से "वैक्यूम विश्लेषण <tablename>" जारी करना संभव है?
उत्तर
यह पायथन डीबी-एपीआई में एक दोष है: यह आपके लिए एक लेनदेन शुरू करता है। ऐसा नहीं करना चाहिए; चाहे लेनदेन शुरू करना है या नहीं, प्रोग्रामर तक होना चाहिए। निम्न स्तर के, निम्न एपीआई जैसे डेवलपर को बेबीसिट नहीं करना चाहिए और चीजों को हमारी पीठ के पीछे लेनदेन शुरू करना चाहिए। हम बड़े लड़के हैं - हम खुद को लेनदेन शुरू कर सकते हैं, धन्यवाद।
psycopg2 के साथ, आप एपीआई एक्सटेंशन के साथ इस दुर्भाग्यपूर्ण व्यवहार को अक्षम कर सकते हैं: connection.autocommit()
पर कॉल करें। दुर्भाग्यवश, इसके लिए कोई मानक एपीआई नहीं है, इसलिए आपको लेन-देन के बाहर निष्पादित किए जाने वाले आदेश जारी करने के लिए गैर-मानक एक्सटेंशन पर निर्भर रहना होगा।
कोई भाषा इसके वारंट के बिना है, और यह पायथन का एक है। मुझे इससे पहले भी काटा गया है।
सिर्फ एक टिप्पणी है कि 'connection.autocommit' एक बूलियन विशेषता है, फ़ंक्शन नहीं। तो लेनदेन के बाहर पूछताछ निष्पादित करने के लिए आप VACUUM निष्पादित करने से पहले 'connection.autocommit = True' सेट कर सकते हैं –
आप का उपयोग Postgres autocommit
मोड चालू कर सकते हैं SQLAlchemy के raw_connection (यदि आप एक "कच्चे" psycopg2 कनेक्शन दे देंगे): [? PostgreSQL - कोड के बाहर लेनदेन ब्लॉक से वैक्यूम चलाने के लिए कैसे]
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")
की
- 1. पायथन-पोस्टग्रेएसक्यूएल psycopg2 इंटरफ़ेस -> execemany
- 2. वैक्यूम
- 3. SQLAlchemy
- 4. शाब्दिक या प्रीप्रोसेसर जारी करना <map>
- 5. PostgreSQL: क्या प्राथमिक कुंजी या अद्वितीय के लिए कस्टम नाम प्रदान करना संभव है?
- 6. psycopg2
- 7. वाक्यविन्यास या अर्थशास्त्र जारी करना?
- 8. सी #: क्या IOrderedEnumerable <T> वापस करना संभव है?
- 9. psycopg2
- 10. psycopg2
- 11. क्या <video> प्रतिबिंबित करना संभव है?
- 12. गतिशील जारी करना संभव है एएसपी-क्लासिक में?
- 13. psycopg2
- 14. क्या एनएसओपेन्स विश्लेषण से पूरे नामस्थानों को बाहर करना संभव है?
- 15. psycopg2 mysqldb.escape_string के बराबर है?
- 16. क्या बेहतर है, जारी या नहीं?
- 17. जारी करना?
- 18. क्या रिशेर्पर के माध्यम से कोड सॉर्ट करना संभव है?
- 19. क्या मुझे SQLObject, SQLAlchemy, या SQLAlchemy + Elixir का उपयोग करना चाहिए?
- 20. पोस्टग्रेएसक्यूएल
- 21. पोस्टग्रेएसक्यूएल
- 22. क्या सभी फ़ाइलों को स्वचालित रूप से देखने के लिए अर्थपूर्ण (emacs) प्राप्त करना संभव है?
- 23. जारी करना/Fabric.js
- 24. क्या JSONArray के माध्यम से पुनरावृत्त करना संभव है?
- 25. एनएचबर्ननेट पोस्टग्रेएसक्यूएल
- 26. एक्सकोड बिल्ड और विश्लेषण - क्या जानबूझकर किसी विशेष फ़ाइल पर विश्लेषण छोड़ना संभव है?
- 27. jQuery: जारी रखने से पहले लोडिंग को समाप्त करने के लिए $ .get की प्रतीक्षा करना संभव है?
- 28. पहले_फिल्टर: क्या कार्रवाई के लिए नियंत्रक निर्दिष्ट करना संभव है?
- 29. क्या टैब के लिए grep को गिट करना संभव है?
- 30. क्या टर्मिनल से प्रोग्राम चलाने के लिए संभव है और टर्मिनल को बंद करने के बाद इसे जारी रखना जारी है?
संभव डुप्लिकेट (http://stackoverflow.com/questions/1017463/postgresql-how-to-run-vacuum-from-code-outside-transaction-block) –
धन्यवाद, यह एक डुप्लिकेट है। मैं इसे एक के रूप में कैसे चिह्नित कर सकता हूं? – donatello