2012-04-18 12 views
15

सी/सी ++ से एसक्लाइट 3 का उपयोग करते समय मैंने सीखा कि इसमें एक ओपन-इन-रीड-ओनली मोड विकल्प है, जो आकस्मिक डेटा-भ्रष्टाचार से बचने के लिए बहुत आसान है। पाइथन बाध्यकारी में ऐसी कोई चीज है?रीड-ओनली मोड में पायथन से sqlite3 डेटाबेस खोलना

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/4239606/sqlite3-read-only-on-a-file-system-that-doesnt-support-locking – Chris

+1

@ क्रिस धन्यवाद, मैं एक उत्तर दोबारा जवाब दूंगा सिर्फ एक ही सवाल के साथ भविष्य में लोगों को कुछ काम बचाने के लिए। – dsign

+0

[मूल पायक्टन 3 से मूल sqlite3 से गुजरने के लिए संभावित पाइपथन का संभावित डुप्लिकेट और (स्थापित) नवीनतम sqlite3 संस्करण का उपयोग करें] (http://stackoverflow.com/questions/1545479/force-python-to-forego-native-sqlite3-and-use- स्थापित-नवीनतम-sqlite3-ver) –

उत्तर

2

@Chris, no द्वारा दिए गए लिंक के अनुसार। लेकिन sqlite3 के लिए एक और रैपर है, जो कम पीईपी 24 9-अनुरूप है और इंजन की नई विशेषताओं को समेकित करते हुए, sqlite3 को अधिक कसकर लपेटता है: http://code.google.com/p/apsw/। वह रैपर केवल पढ़ने-योग्य मोड, साथ ही अन्य niceties में डेटाबेस खोलने का समर्थन करता है।

21

अजगर के रूप में 3.4.0 आप निम्नलिखित के साथ अपरिवर्तनीय मोड में डेटाबेस खोल सकते हैं:

db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True) 

इसके अलावा the documentation देखते हैं। अजगर 2.x के लिए

+0

नोट: यह पायथन पर काम नहीं करता है, केवल पायथन 3 पर – lowtech

7

वर्कअराउंड:

fd = os.open(filename, os.O_RDONLY) 
c = sqlite3.connect('/dev/fd/%d' % fd) 
os.close(fd) 

नहीं POSIX, लेकिन उपलब्ध लिनक्स, ओएस/एक्स और सबसे आधुनिक Unixes पर।

संबंधित मुद्दे