From 9932025271d7f6ba25d9c7bf8aa80097ef17b07d Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 30 Jan 2010 11:05:34 +0000 Subject: [PATCH] move sqlite charset fix to Configuration.py from Database.py, make separate not_needed variables in Charset.py in case we want to update them separately --- pyfpdb/Charset.py | 10 +++++----- pyfpdb/Configuration.py | 10 ++++++++++ pyfpdb/Database.py | 11 ++--------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/pyfpdb/Charset.py b/pyfpdb/Charset.py index d49b6219..6b5e6b7c 100644 --- a/pyfpdb/Charset.py +++ b/pyfpdb/Charset.py @@ -28,12 +28,12 @@ encoder_to_utf = codecs.lookup('utf-8') encoder_to_sys = codecs.lookup(Configuration.LOCALE_ENCODING) # I'm saving a few cycles with this one -not_needed = False +not_needed1, not_needed2, not_needed3 = False, False, False if Configuration.LOCALE_ENCODING == 'UTF8': - not_needed = True + not_needed1, not_needed2, not_needed3 = True, True, True def to_utf8(s): - if not_needed: return s + if not_needed1: return s try: #(_out, _len) = encoder_to_utf.encode(s) @@ -44,7 +44,7 @@ def to_utf8(s): raise def to_db_utf8(s): - if not_needed: return s + if not_needed2: return s try: (_out, _len) = encoder_to_utf.encode(unicode(s)) @@ -54,7 +54,7 @@ def to_db_utf8(s): raise def to_gui(s): - if not_needed: return s + if not_needed3: return s try: (_out, _len) = encoder_to_sys.encode(s) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 9c14d16f..9e90a5bb 100644 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -144,6 +144,11 @@ if LOCALE_ENCODING == "US-ASCII": print "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're not on a Mac, please report this problem." LOCALE_ENCODING = "cp1252" + +# needs LOCALE_ENCODING (above), imported for sqlite setup in Config class below +import Charset + + ######################################################################## def string_to_bool(string, default=True): """converts a string representation of a boolean value to boolean True or False @@ -648,6 +653,11 @@ class Config: db['db-backend'] = 3 elif self.supported_databases[name].db_server== DATABASE_TYPE_SQLITE: db['db-backend'] = 4 + + # sqlcoder: this assignment fixes unicode problems for me with sqlite (windows, cp1252) + # feel free to remove or improve this if you understand the problems + # better than me (not hard!) + #Charset.not_needed1, Charset.not_needed2, Charset.not_needed3 = True, True, True else: raise ValueError('Unsupported database backend: %s' % self.supported_databases[name].db_server) return db diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 0b6cac8e..754af54a 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -372,7 +372,6 @@ class Database: print msg raise FpdbError(msg) elif backend == Database.SQLITE: - log.info("Connecting to SQLite: %(database)s" % {'database':database}) import sqlite3 if use_pool: sqlite3 = pool.manage(sqlite3, pool_size=1) @@ -385,7 +384,8 @@ class Database: log.info("Creating directory: '%s'" % (self.config.dir_databases)) os.mkdir(self.config.dir_databases) database = os.path.join(self.config.dir_databases, database) - log.info(" sqlite db: " + database) + log.info("Connecting to SQLite: %(database)s" % {'database':database}) + print "Connecting to SQLite: %(database)s" % {'database':database} self.connection = sqlite3.connect(database, detect_types=sqlite3.PARSE_DECLTYPES ) sqlite3.register_converter("bool", lambda x: bool(int(x))) sqlite3.register_adapter(bool, lambda x: "1" if x else "0") @@ -399,13 +399,6 @@ class Database: self.cursor = self.connection.cursor() self.cursor.execute('PRAGMA temp_store=2') # use memory for temp tables/indexes self.cursor.execute('PRAGMA synchronous=0') # don't wait for file writes to finish - - # sqlcoder: this assignment fixes unicode problems for me with sqlite (windows, cp1252) - # feel free to remove or improve this if you understand the problems - # better than me (not hard!) - # I think maybe we need a separate "not_needed" flag for each of the routines - # in Charset.py??? - # Charset.not_needed = True else: raise FpdbError("unrecognised database backend:"+backend)