I've not done much with reflection, but perhaps you could use the
column_reflect event:

  
http://docs.sqlalchemy.org/en/rel_0_8/core/events.html#sqlalchemy.events.DDLEvents.column_reflect

Simon

On Tue, Feb 4, 2014 at 11:28 AM, Erich Blume <blume.er...@gmail.com> wrote:
> Thanks Simon,
>
> Do you know how I might use that with reflection? There's several hundred of
> these columns, I'd hate to have to override each one individually - that
> sort of defeats the purpose of reflection.
>
> One thought I just had was perhaps I could subclass the Text type and then
> override the ischema_names for SQLite for TEXT type. That'd do the trick, I
> suspect!
>
>
> On Tue, Feb 4, 2014 at 3:26 AM, Simon King <si...@simonking.org.uk> wrote:
>>
>> On Tue, Feb 4, 2014 at 10:15 AM, Erich Blume <blume.er...@gmail.com>
>> wrote:
>> > I am working on a binding to a SQLite database that I do not control the
>> > creation of, with the aid of reflection. I'm running in to what I
>> > believe
>> > are very basic UTF-8 decoding errors. For instance, a TEXT cell has the
>> > byte
>> > '0x92' in it and is causing an OperationalError. Presumably, this is
>> > because
>> > 0x92 (by itself) is not a valid encoding for any Unicode code point. I
>> > would
>> > prefer that the decoding from UTF-8 to be forced, perhaps by dropping
>> > the
>> > bad byte. How can I do this?
>> >
>> > The database has a table with a column called 'description', which is of
>> > type TEXT. The "PRAGMA encoding" is left at 'UTF-8', thank goodness. One
>> > of
>> > the rows, however, contains within its otherwise ascii byte contents the
>> > singleton byte '0x92'. Based on the context of the sentence, it seems
>> > that
>> > this was intended to be encoded as a single quotation mark, some
>> > googling
>> > suggests 'RIGHT SINGLE QUOTATION MARK' in unicode, which is '0xE2 0x80
>> > 0x99'. I gather that MSSQL (which was the original source of the data in
>> > this database) uses Microsofts' infernal web encodings sometimes and
>> > that is
>> > probably the source of this byte.
>> >
>> > The issue is this: I really need to read this data! It would be *ideal*
>> > to
>> > have the aid of something like python's 'replace' decoding handler but
>> > failing that just eliding the byte would do fine in a pinch.
>> >
>> > When fetching this row in Python 3.3 with SQLAlchemy 0.9.1 my session
>> > looks
>> > vaguely like this (with the text and stack trace truncated out for
>> > brevity).
>> >
>> >       File
>> >
>> > "/usr/local/Cellar/python3/3.3.3/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/sqlalchemy/engine/result.py",
>> > line 760, in <listcomp>
>> >         return [process_row(metadata, row, processors, keymap)
>> >       sqlalchemy.exc.OperationalError: (OperationalError) Could not
>> > decode
>> > to UTF-8 column 'description' with text <...>
>> >
>> > Is there some way to accomplish this?
>> >
>>
>> The String-related column types have a "unicode_error" parameter which
>> sounds like it might be what you want:
>>
>>
>> http://docs.sqlalchemy.org/en/rel_0_9/core/types.html#sqlalchemy.types.String.params.unicode_error
>>
>> Note the various warnings around it though...
>>
>> Hope that helps,
>>
>> Simon
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "sqlalchemy" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/sqlalchemy/T--Ftk5EVZg/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> sqlalchemy+unsubscr...@googlegroups.com.
>>
>> To post to this group, send email to sqlalchemy@googlegroups.com.
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to