]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
cython's result_processor()
authorHajime Nakagami <nakagami@gmail.com>
Fri, 1 Mar 2013 14:27:39 +0000 (23:27 +0900)
committerHajime Nakagami <nakagami@gmail.com>
Fri, 1 Mar 2013 14:27:39 +0000 (23:27 +0900)
lib/sqlalchemy/dialects/mysql/cymysql.py

index da06121dc1d8f22efa836712ce161fd83753c456..8f61dcb95e9b9e9bf3f04807776ca905727301d5 100644 (file)
 """
 
 from .mysqldb import MySQLDialect_mysqldb
+from .base import (BIT, MySQLDialect)
+from ... import util
+
+class _cymysqlBIT(BIT):
+    def result_processor(self, dialect, coltype):
+        """Convert a MySQL's 64 bit, variable length binary string to a long.
+        """
+
+        def process(value):
+            if value is not None:
+                # Py2K
+                value = 0L
+                for i in map(ord, value):
+                    value = value << 8 | i
+                # end Py2K
+                # Py3K
+                #value = 0
+                #for i in value:
+                #    value = value << 8 | i 
+            return value
+        return process
+
 
 class MySQLDialect_cymysql(MySQLDialect_mysqldb):
     driver = 'cymysql'
 
     description_encoding = None
 
+    colspecs = util.update_copy(
+        MySQLDialect.colspecs,
+        {
+            BIT: _cymysqlBIT,
+        }
+    )
+
     @classmethod
     def dbapi(cls):
         return __import__('cymysql')