2012-03-12 15 views
11

के साथ SQLite PRAGMA कथन कैसे सेट करें I SQLAlchemy को SQLite .journal फ़ाइल को मेमोरी को प्रदर्शन को गति देने के लिए रखना चाहूंगा। कोई भाग्य के साथएसक्यूएलकेमी

sqlite_db_engine = create_engine('sqlite:///%s' % str(dbname)) 

db = sqlite_db_engine.connect() 
db.execute("PRAGMA journal_mode = MEMORY") 
db.execute("PRAGMA synchronous = OFF") 
db.execute("PRAGMA temp_store = MEMORY") 
db.execute("PRAGMA cache_size = 500000") 

:

sqlite_db_engine = create_engine('sqlite:///%s' % str(dbname), connect_args = {'PRAGMA  journal_mode':'MEMORY', 'PRAGMA synchronous':'OFF', 'PRAGMA temp_store':'MEMORY', 'PRAGMA cache_size':'5000000'}) 

db = sqlite_db_engine.connect() 

और इस: मैं इस कोशिश की है। लंबे लेनदेन के लिए मैं अभी भी डिस्क पर बनाई गई .journal फ़ाइल देख सकता हूं। क्या यह सेट करने का कोई और तरीका है?

* कृपया ध्यान मैं निर्मित अजगर SQLite मॉड्यूल

+0

मैं भी इस धागे की तरह एक श्रोता जोड़ने की कोशिश की: http://stackoverflow.com/questions/2614984/sqlite-sqlalchemy-how-to-enforce-foreign-keys – tomc

+0

मैं त्रुटि 'DBAPIError मिला: (TypeError) 'PRAGMA cache_size' इस फ़ंक्शन के लिए एक अवैध कीवर्ड तर्क है कोई भी नहीं 'जब मैं आपके कोड को उपयोगकर्ता करने का प्रयास करता हूं। आपको यही त्रुटि मिली? – Nilesh

+0

मुझे कोई त्रुटि नहीं मिलती है, कोड ठीक निष्पादित करता है लेकिन स्पष्ट रूप से कुछ भी नहीं करता है। – tomc

उत्तर

5

साथ यह कर कोई समस्या नहीं है मूल रूप से आप को प्राप्त करने के आप क्या चाहते हैं foreignkey के बारे में उदाहरण के पुनर्लेखन के लिए सक्षम होना चाहिए। घटनाओं के उपयोग के बारे https://stackoverflow.com/a/7831210/1890086

engine = create_engine(database_url) 

def _fk_pragma_on_connect(dbapi_con, con_record): 
    dbapi_con.execute('PRAGMA journal_mode = MEMORY') 
    # ... 

from sqlalchemy import event 
event.listen(engine, 'connect', _fk_pragma_on_connect) 
0

दो पिछले समाधान काम नहीं किया है, इसलिए मैं the another one मिल गया है।

from sqlalchemy.interfaces import PoolListener 
class MyListener(PoolListener): 
    def connect(self, dbapi_con, con_record): 
     dbapi_con.execute('pragma journal_mode=OFF') 
     dbapi_con.execute('PRAGMA synchronous=OFF') 
     dbapi_con.execute('PRAGMA cache_size=100000') 

engine = create_engine('sqlite:///' + basefile,echo=False, listeners= [MyListener()]) 
+1

हाल के संस्करणों में यह दिया जाएगा: SADeprecation चेतावनी: पूल (और create_engine()) को 'श्रोताओं' तर्क को बहिष्कृत किया गया है। Event.listen का उपयोग करें() – jpoppe

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