Skip to content

Instantly share code, notes, and snippets.

@eka
Created April 15, 2015 16:54
Show Gist options
  • Save eka/eecc562ae8a0465a7eae to your computer and use it in GitHub Desktop.
Save eka/eecc562ae8a0465a7eae to your computer and use it in GitHub Desktop.
Cache SQLObject Table Discovery
# in sqlobject/main.py replace this method
def addColumnsFromDatabase(sqlmeta, connection=None):
soClass = sqlmeta.soClass
conn = connection or soClass._connection
import tempfile
import pickle
import os
temp_dir = tempfile.gettempdir()
target_file = os.path.join(temp_dir, sqlmeta.table)
_columns = None
if os.path.exists(target_file):
with open(target_file) as fd:
print "Loading _columns from %s" % target_file
_columns = pickle.load(fd)
if not _columns:
_columns = conn.columnsFromSchema(sqlmeta.table, soClass)
with open(target_file, 'wb') as fd:
print "Saving _columns to %s" % target_file
pickle.dump(_columns, fd)
# _columns = conn.columnsFromSchema(sqlmeta.table, soClass)
for columnDef in _columns:
if columnDef.name not in sqlmeta.columnDefinitions:
if isinstance(columnDef.name, unicode):
columnDef.name = columnDef.name.encode('ascii')
sqlmeta.addColumn(columnDef)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment