Hello all,

Here is what I have:

    table = Table("contract", metadata,
        ...
        Column("is_awesome", Boolean),
        ...
    )

    mapper(Contract, table, properties={
        ...
        "is_awesome": table.c.is_awesome,
        ...
    })

When using "mssql+pymssql", if I set the ``is_awesome`` value on a
``Contract`` instance, I get the following:

    OperationalError: (OperationalError) SQL Server message 207, severity 16, 
state 1, line 1:
    Invalid column name 'False'.
    DB-Lib error message 207, severity 16: General SQL Server error:
    Check messages from the SQL Server
    'UPDATE contract SET is_awesome=%(is_awesome)s'
    {'is_awesome': False}

You can find a patch below that converts the ``bool`` to an ``int`` for
dialects not supporting "native_boolean", this fixes the problem for me,
but maybe I'm approaching the issue the wrong way.

Thanks,
Bertrand


diff -r d5ab043dc08f lib/sqlalchemy/types.py
--- a/lib/sqlalchemy/types.py   Mon Nov 15 09:55:43 2010 -0500
+++ b/lib/sqlalchemy/types.py   Mon Nov 15 11:42:28 2010 -0500
@@ -1681,6 +1681,12 @@
                                     self._should_create_constraint)
                     )
         table.append_constraint(e)
+
+    def bind_processor(self, dialect):
+        if dialect.supports_native_boolean:
+            return None
+        else:
+            return lambda b: int(b)
     
     def result_processor(self, dialect, coltype):
         if dialect.supports_native_boolean:

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to