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
This commit is contained in:
parent
d147187a71
commit
9932025271
|
@ -28,12 +28,12 @@ encoder_to_utf = codecs.lookup('utf-8')
|
||||||
encoder_to_sys = codecs.lookup(Configuration.LOCALE_ENCODING)
|
encoder_to_sys = codecs.lookup(Configuration.LOCALE_ENCODING)
|
||||||
|
|
||||||
# I'm saving a few cycles with this one
|
# 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':
|
if Configuration.LOCALE_ENCODING == 'UTF8':
|
||||||
not_needed = True
|
not_needed1, not_needed2, not_needed3 = True, True, True
|
||||||
|
|
||||||
def to_utf8(s):
|
def to_utf8(s):
|
||||||
if not_needed: return s
|
if not_needed1: return s
|
||||||
|
|
||||||
try:
|
try:
|
||||||
#(_out, _len) = encoder_to_utf.encode(s)
|
#(_out, _len) = encoder_to_utf.encode(s)
|
||||||
|
@ -44,7 +44,7 @@ def to_utf8(s):
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def to_db_utf8(s):
|
def to_db_utf8(s):
|
||||||
if not_needed: return s
|
if not_needed2: return s
|
||||||
|
|
||||||
try:
|
try:
|
||||||
(_out, _len) = encoder_to_utf.encode(unicode(s))
|
(_out, _len) = encoder_to_utf.encode(unicode(s))
|
||||||
|
@ -54,7 +54,7 @@ def to_db_utf8(s):
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def to_gui(s):
|
def to_gui(s):
|
||||||
if not_needed: return s
|
if not_needed3: return s
|
||||||
|
|
||||||
try:
|
try:
|
||||||
(_out, _len) = encoder_to_sys.encode(s)
|
(_out, _len) = encoder_to_sys.encode(s)
|
||||||
|
|
|
@ -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."
|
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"
|
LOCALE_ENCODING = "cp1252"
|
||||||
|
|
||||||
|
|
||||||
|
# needs LOCALE_ENCODING (above), imported for sqlite setup in Config class below
|
||||||
|
import Charset
|
||||||
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
def string_to_bool(string, default=True):
|
def string_to_bool(string, default=True):
|
||||||
"""converts a string representation of a boolean value to boolean True or False
|
"""converts a string representation of a boolean value to boolean True or False
|
||||||
|
@ -648,6 +653,11 @@ class Config:
|
||||||
db['db-backend'] = 3
|
db['db-backend'] = 3
|
||||||
elif self.supported_databases[name].db_server== DATABASE_TYPE_SQLITE:
|
elif self.supported_databases[name].db_server== DATABASE_TYPE_SQLITE:
|
||||||
db['db-backend'] = 4
|
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:
|
else:
|
||||||
raise ValueError('Unsupported database backend: %s' % self.supported_databases[name].db_server)
|
raise ValueError('Unsupported database backend: %s' % self.supported_databases[name].db_server)
|
||||||
return db
|
return db
|
||||||
|
|
|
@ -372,7 +372,6 @@ class Database:
|
||||||
print msg
|
print msg
|
||||||
raise FpdbError(msg)
|
raise FpdbError(msg)
|
||||||
elif backend == Database.SQLITE:
|
elif backend == Database.SQLITE:
|
||||||
log.info("Connecting to SQLite: %(database)s" % {'database':database})
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
if use_pool:
|
if use_pool:
|
||||||
sqlite3 = pool.manage(sqlite3, pool_size=1)
|
sqlite3 = pool.manage(sqlite3, pool_size=1)
|
||||||
|
@ -385,7 +384,8 @@ class Database:
|
||||||
log.info("Creating directory: '%s'" % (self.config.dir_databases))
|
log.info("Creating directory: '%s'" % (self.config.dir_databases))
|
||||||
os.mkdir(self.config.dir_databases)
|
os.mkdir(self.config.dir_databases)
|
||||||
database = os.path.join(self.config.dir_databases, database)
|
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 )
|
self.connection = sqlite3.connect(database, detect_types=sqlite3.PARSE_DECLTYPES )
|
||||||
sqlite3.register_converter("bool", lambda x: bool(int(x)))
|
sqlite3.register_converter("bool", lambda x: bool(int(x)))
|
||||||
sqlite3.register_adapter(bool, lambda x: "1" if x else "0")
|
sqlite3.register_adapter(bool, lambda x: "1" if x else "0")
|
||||||
|
@ -399,13 +399,6 @@ class Database:
|
||||||
self.cursor = self.connection.cursor()
|
self.cursor = self.connection.cursor()
|
||||||
self.cursor.execute('PRAGMA temp_store=2') # use memory for temp tables/indexes
|
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
|
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:
|
else:
|
||||||
raise FpdbError("unrecognised database backend:"+backend)
|
raise FpdbError("unrecognised database backend:"+backend)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user