commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r10187 - in trunk/gnue-common: . src/datasources/drivers/DBSIG2 s


From: reinhard
Subject: [gnue] r10187 - in trunk/gnue-common: . src/datasources/drivers/DBSIG2 src/datasources/drivers/sql/sqlite3
Date: Wed, 26 May 2010 06:19:45 -0500 (CDT)

Author: reinhard
Date: 2010-05-26 06:19:44 -0500 (Wed, 26 May 2010)
New Revision: 10187

Modified:
   trunk/gnue-common/
   trunk/gnue-common/src/datasources/drivers/DBSIG2/Connection.py
   trunk/gnue-common/src/datasources/drivers/DBSIG2/ResultSet.py
   trunk/gnue-common/src/datasources/drivers/sql/sqlite3/Base.py
Log:
SQLite allows for passing Unicode directly to the backend, and with Python 2.6,
it even *requires* doing so.



Property changes on: trunk/gnue-common
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: 2010-05-25 16:50:35.644000053 +0200
committer: Reinhard Müller <address@hidden>
properties: 
        branch-nick: common

   + timestamp: 2010-05-26 13:17:38.683000088 +0200
committer: Reinhard Müller <address@hidden>
properties: 
        branch-nick: common

Name: bzr:file-ids
   - src/datasources/drivers/Base/ResultSet.py  
address@hidden:trunk%2Fgnue-common:src%2Fdatasources%2Fdrivers%2FBase%2FResultSet.py

   + src/datasources/drivers/DBSIG2/Connection.py       
address@hidden:trunk%2Fgnue-common:src%2Fdatasources%2Fdrivers%2FDBSIG2%2FConnection.py
src/datasources/drivers/DBSIG2/ResultSet.py     
address@hidden:trunk%2Fgnue-common:src%2Fdatasources%2Fdrivers%2FDBSIG2%2FResultSet.py
src/datasources/drivers/sql/sqlite3/Base.py     
address@hidden:trunk%2Fgnue-common:src%2Fdatasources%2Fdrivers%2Fsql%2Fsqlite3%2FBase.py

Name: bzr:revision-id:v4
   - 3116 address@hidden
3117 address@hidden
3118 address@hidden
3119 address@hidden
3120 address@hidden
3121 address@hidden
3122 address@hidden
3123 address@hidden
3124 address@hidden
3125 address@hidden

   + 3116 address@hidden
3117 address@hidden
3118 address@hidden
3119 address@hidden
3120 address@hidden
3121 address@hidden
3122 address@hidden
3123 address@hidden
3124 address@hidden
3125 address@hidden
3126 address@hidden

Name: bzr:text-parents
   - src/datasources/drivers/Base/ResultSet.py  
svn-v3-single1-dHJ1bmsvZ251ZS1jb21tb24.:3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-common:9973

   + src/datasources/drivers/DBSIG2/Connection.py       
svn-v3-single1-dHJ1bmsvZ251ZS1jb21tb24.:3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-common:9954
src/datasources/drivers/DBSIG2/ResultSet.py     address@hidden
src/datasources/drivers/sql/sqlite3/Base.py     
svn-v3-single1-dHJ1bmsvZ251ZS1jb21tb24.:3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-common:9954


Modified: trunk/gnue-common/src/datasources/drivers/DBSIG2/Connection.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/DBSIG2/Connection.py      
2010-05-25 14:56:57 UTC (rev 10186)
+++ trunk/gnue-common/src/datasources/drivers/DBSIG2/Connection.py      
2010-05-26 11:19:44 UTC (rev 10187)
@@ -94,7 +94,9 @@
   _named_as_sequence_ = False           # Pass 'named' parameters as sequence
   _std_datetime_      = False
 
+  _unicode_           = False           # Accepts Unicode strings
 
+
   # ---------------------------------------------------------------------------
   # Constructor
   # ---------------------------------------------------------------------------
@@ -106,10 +108,11 @@
     self._driver = __import__ (self._drivername_, None, None, '*')
 
     # Encoding used to communicate with the database (not used by all drivers)
-    if parameters.has_key ('encoding'):
-      self._encoding = parameters ['encoding']
-    else:
-      self._encoding = 'utf-8'
+    if not self._unicode_:
+      if parameters.has_key ('encoding'):
+        self._encoding = parameters ['encoding']
+      else:
+        self._encoding = 'utf-8'
 
     self._native = None
 
@@ -178,7 +181,7 @@
       row = rows [0]
       result = {}
       for i in range (len (fields)):
-        if isinstance (row [i], str):
+        if not self._unicode_ and isinstance (row [i], str):
           result [fields [i]] = unicode (row [i], self._encoding)
         else:
           result [fields [i]] = row [i]
@@ -334,7 +337,7 @@
         # checktype (parameters_value, .....) -- too many valid types :-)
 
     # Convert to encoded string for database
-    if isinstance (statement, unicode):
+    if not self._unicode_ and isinstance (statement, unicode):
       s = statement.encode (self._encoding)
     else:
       s = statement
@@ -343,7 +346,7 @@
       # convert parameter dictionary to encoded strings
       p = {}
       for (key, value) in parameters.items ():
-        if isinstance (key, unicode):
+        if not self._unicode_ and isinstance (key, unicode):
           k = key.encode (self._encoding)
         else:
           k = key
@@ -385,7 +388,7 @@
 
     Descendants may override this function to to different type conversions.
     """
-    if isinstance (value, unicode):
+    if not self._unicode_ and isinstance (value, unicode):
       # Unicode: return encoded string
       return value.encode (self._encoding)
 

Modified: trunk/gnue-common/src/datasources/drivers/DBSIG2/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/DBSIG2/ResultSet.py       
2010-05-25 14:56:57 UTC (rev 10186)
+++ trunk/gnue-common/src/datasources/drivers/DBSIG2/ResultSet.py       
2010-05-26 11:19:44 UTC (rev 10187)
@@ -156,8 +156,11 @@
     self.__connection = connection
 
     # get field names from cursor description
-    self.__fieldnames = [(unicode (d [0], connection._encoding)).lower () \
-                         for d in self.__cursor.description]
+    if connection._unicode_:
+      self.__fieldnames = [d[0].lower() for d in self.__cursor.description]
+    else:
+      self.__fieldnames = [(unicode (d [0], connection._encoding)).lower () \
+                           for d in self.__cursor.description]
 
 
   # ---------------------------------------------------------------------------
@@ -197,7 +200,7 @@
       for row in rows:
         result = {}
         for (fieldname, value) in zip (self.__fieldnames, row):
-          if isinstance (value, str):
+          if not self.__connection._unicode_ and isinstance (value, str):
             value = unicode (value, self.__connection._encoding)
           result [fieldname] = value
         yield result

Modified: trunk/gnue-common/src/datasources/drivers/sql/sqlite3/Base.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/sql/sqlite3/Base.py       
2010-05-25 14:56:57 UTC (rev 10186)
+++ trunk/gnue-common/src/datasources/drivers/sql/sqlite3/Base.py       
2010-05-26 11:19:44 UTC (rev 10187)
@@ -52,6 +52,7 @@
   _rowidField_      = u'oid'
   _broken_rowcount_ = True
   _must_fetchall_   = True
+  _unicode_         = True
 
 
   # ---------------------------------------------------------------------------




reply via email to

[Prev in Thread] Current Thread [Next in Thread]