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..639007f1 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,10 @@ 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 a8456294..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") @@ -1769,10 +1769,7 @@ class Database: def insertPlayer(self, name, site_id): result = None - if self.backend == self.SQLITE: - _name = name - else: - _name = Charset.to_db_utf8(name) + _name = Charset.to_db_utf8(name) c = self.get_cursor() q = "SELECT name, id FROM Players WHERE siteid=%s and name=%s" q = q.replace('%s', self.sql.query['placeholder'])