that object already got saved in DB after session.commit(). After that i am
retrieving object which already stored in db. still same issue.

On Wed, Aug 5, 2015 at 7:41 PM, Mike Bayer <[email protected]> wrote:

>
>
> On 8/5/15 9:24 AM, Abhishek Sharma wrote:
>
> Hi Team,
> I have created customized data type using TypeDecorator approach.
>
> *from sqlalchemy import TypeDecorator, CLOB*
>
> *class ForceUnicodeClob(TypeDecorator):      impl = CLOB*
>
>
>
> *     def process_bind_param(self, value, dialect):          if
> isinstance(value, str):             value = value.decode('utf-8', 'ignore')
>          return value*
>
>
>
> *     def process_result_value(self, value, dialect):          if value is
> not None:              value = "PREFIX" + value.decode('utf-8', 'ignore')
>          return value*
>
>
> After this in my table definition I declared the type of one of column as
> *ForceUnicodeClob.*
>
> *dlr_dclmr = Table('dlr_dclmr', metadata, Column('dclmr_ds',
> ForceUnicodeClob(), primary_key=False))*
>
> After this I am executing the query on this table with
> session.query(Model) , but when I am accessing result.*dclmr_ds *i am not
> getting response prepended with "PREFIX".
>
> this can happen in the ORM if you retrieve a Model object that is already
> present in the Session, which you created as a pending object:
>
>
> model = Model(dclmr_ds='somestring')
> session.add(model)
> session.flush()
>
> m2 = session.query(Model).filter(...).first()
>
> assert model is m2
>
>
> that is, you get the same object back.  The values of the attributes are
> not updated unless you first expire that object, which normally happens
> when you say session.commit().
>
>
>
>
>
>
> am i missing some  steps?
>
> SQLAlchemy Version: 0.9.9
> We are using classic mapping for attributes mapping with DB columns.
>
>
>
>
> On Tue, Aug 4, 2015 at 3:49 PM, Mike Bayer <[email protected]>
> wrote:
>
>>
>>
>> On 8/4/15 1:41 PM, Abhishek Sharma wrote:
>>
>> is this followings two instructions compulsory  while defining new type?
>> m.drop_all(e)
>> m.create_all(e)
>>
>>
>> no that is just part of the demonstration script.
>>
>>
>>
>> this instructions are not feasible , because DB team already defined
>> schema and normal user can not drop and create table.
>>
>> yup, that is a given
>>
>>
>>
>> On Tue, Aug 4, 2015 at 8:59 PM, Mike Bayer < <[email protected]>
>> [email protected]> wrote:
>>
>>>
>>>
>>> On 8/4/15 7:41 AM, Abhishek Sharma wrote:
>>>
>>> in case lot of overhead will be there so it is better to use that column
>>> label only
>>>
>>> well it doesn't work anyway because data from a CLOB is not in
>>> cx_oracle's world a "String", it's a LOB.   The CLOB / NCLOB types for
>>> cx_oracle are organized in their own way where only NCLOB actually has
>>> unicode handling capability, regardless of the coerce_to_unicode or
>>> convert_unicode flags; CLOB does not.   So either use NCLOB, or build out
>>> your own convert unicode, here is a demo:
>>>
>>> from sqlalchemy import create_engine, CLOB, Table, MetaData, Column,
>>> select, TypeDecorator
>>> from sqlalchemy.dialects.oracle import NCLOB
>>>
>>> e = create_engine("oracle+cx_oracle://scott:tiger@xe", echo='debug')
>>>
>>> class ForceUnicodeClob(TypeDecorator):
>>>     impl = CLOB
>>>     def process_result_value(self, value, dialect):
>>>         if value is not None:
>>>             value = value.decode('utf-8')
>>>         return value
>>>
>>> m = MetaData()
>>> t = Table('test', m, Column('data1', NCLOB()), Column('data2',
>>> ForceUnicodeClob()))
>>>
>>> m.drop_all(e)
>>> m.create_all(e)
>>>
>>> e.execute(t.insert(), data1=u'unicode', data2=u'unicode')
>>>
>>> result = e.execute(select([t.c.data1, t.c.data2]))
>>> value1, value2 = result.fetchone()
>>> print repr(value1), repr(value2)
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Tue, Aug 4, 2015 at 6:15 AM, Mike Bayer < <[email protected]>
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On 8/4/15 5:47 AM, Abhishek Sharma wrote:
>>>>
>>>> applying convert_unicode to CLOB type does not have any effect. Still I
>>>> am getting str type object from sqlalchemy for CLOB type column
>>>>
>>>>
>>>> have you tried the coerce_to_unicode flag on create_engine() ?
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Mon, Aug 3, 2015 at 1:27 PM, Mike Bayer < <[email protected]>
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On 8/3/15 1:04 PM, Abhishek Sharma wrote:
>>>>>
>>>>> what about CLOB type?  Unicode only handles String type. Do i need to
>>>>> use convert_unicode there?
>>>>>
>>>>>
>>>>> if your CLOB expects non-ascii characters then yes.
>>>>>
>>>>> though on Oracle I thought you really need to be using NCLOB for a col
>>>>> that stores unicode.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Aug 3, 2015 at 6:56 PM, Mike Bayer <
>>>>> <[email protected]>[email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On 8/1/15 12:12 PM, Abhishek Sharma wrote:
>>>>>>
>>>>>> Thanks for help. But still i have confusion over encoding and
>>>>>> decoding procedure which will take place before retrieving and storing 
>>>>>> the
>>>>>> results in DB.
>>>>>>
>>>>>> In case if i am not using convert_unicode option and data type is
>>>>>> String so python process will give str object to sqlalchemy at the time 
>>>>>> of
>>>>>> insert record in DB using ORM. So will alchemy store that object in 
>>>>>> encoded
>>>>>> form?. So at the time of retrieving ORM will give str object for String
>>>>>> type column to python and python decode that object with default 
>>>>>> encoding?
>>>>>>
>>>>>> Can i simply use Unicode Data type for columns where there might be
>>>>>> chance of using non ascii data?
>>>>>>
>>>>>>
>>>>>> if you know that your unicode data is on specific columns then yes,
>>>>>> the Unicode type plugs in an encoder/decoder for those backends that
>>>>>> require it.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Jul 30, 2015 at 2:55 AM, Mike Bayer <
>>>>>> <[email protected]>[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 7/29/15 2:23 PM, Abhishek Sharma wrote:
>>>>>>>
>>>>>>> We are using sqlalchemy version 0.7, python 2.7 and oracle Database.
>>>>>>> We have ASCII as default python encoding and DB have ISO-8052
>>>>>>> encoding. Our DB tables contains some of characters which are out of 
>>>>>>> ASCII
>>>>>>> range. So when we are running query on those tables we are getting 
>>>>>>> Unicode
>>>>>>> Decode error saying "ASCII" codec can not decode. This error we are 
>>>>>>> getting
>>>>>>> without accessing model attributes.
>>>>>>>
>>>>>>> How i can handle these errors without changing python default
>>>>>>> encoding.
>>>>>>>
>>>>>>>
>>>>>>> Oracle's client encoding is controlled by the NLS_LANG environment
>>>>>>> variable.    That has to be set correctly first off (see
>>>>>>> <http://www.oracle.com/technetwork/products/globalization/nls-lang-099431.html>
>>>>>>> http://www.oracle.com/technetwork/products/globalization/nls-lang-099431.html).
>>>>>>> If you have non-ASCII strings encoded in datatypes that are explicitly 
>>>>>>> not
>>>>>>> of type NVARCHAR or NCLOB , or you're relying on a lot of raw SQL, and 
>>>>>>> you
>>>>>>> are still getting errors, I would set the "coerce_to_unicode=True" flag 
>>>>>>> on
>>>>>>> create_engine(), which allows cx_Oracle's unicode facilities to take 
>>>>>>> place
>>>>>>> fully for all string data being returned, at the expense of some
>>>>>>> performance.  See
>>>>>>> <http://docs.sqlalchemy.org/en/rel_1_0/dialects/oracle.html#unicode>
>>>>>>> http://docs.sqlalchemy.org/en/rel_1_0/dialects/oracle.html#unicode
>>>>>>> for background.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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 <[email protected]>
>>>>>>> [email protected].
>>>>>>> To post to this group, send email to <[email protected]>
>>>>>>> [email protected].
>>>>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>>>>> http://groups.google.com/group/sqlalchemy.
>>>>>>> For more options, visit <https://groups.google.com/d/optout>
>>>>>>> https://groups.google.com/d/optout.
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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/eThubIMnL4o/unsubscribe>
>>>>>>> https://groups.google.com/d/topic/sqlalchemy/eThubIMnL4o/unsubscribe
>>>>>>> .
>>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>>> <[email protected]>
>>>>>>> [email protected].
>>>>>>> To post to this group, send email to <[email protected]>
>>>>>>> [email protected].
>>>>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>>>>> http://groups.google.com/group/sqlalchemy.
>>>>>>> For more options, visit <https://groups.google.com/d/optout>
>>>>>>> https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> 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 <[email protected]>
>>>>>> [email protected].
>>>>>> To post to this group, send email to <[email protected]>
>>>>>> [email protected].
>>>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>>>> http://groups.google.com/group/sqlalchemy.
>>>>>> For more options, visit <https://groups.google.com/d/optout>
>>>>>> https://groups.google.com/d/optout.
>>>>>>
>>>>>>
>>>>>> --
>>>>>> 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/eThubIMnL4o/unsubscribe>
>>>>>> https://groups.google.com/d/topic/sqlalchemy/eThubIMnL4o/unsubscribe.
>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>> <[email protected]>
>>>>>> [email protected].
>>>>>> To post to this group, send email to <[email protected]>
>>>>>> [email protected].
>>>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>>>> http://groups.google.com/group/sqlalchemy.
>>>>>> For more options, visit <https://groups.google.com/d/optout>
>>>>>> https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> --
>>>>> 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 <[email protected]>
>>>>> [email protected].
>>>>> To post to this group, send email to <[email protected]>
>>>>> [email protected].
>>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>>> http://groups.google.com/group/sqlalchemy.
>>>>> For more options, visit <https://groups.google.com/d/optout>
>>>>> https://groups.google.com/d/optout.
>>>>>
>>>>>
>>>>> --
>>>>> 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/eThubIMnL4o/unsubscribe>
>>>>> https://groups.google.com/d/topic/sqlalchemy/eThubIMnL4o/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> <[email protected]>
>>>>> [email protected].
>>>>> To post to this group, send email to <[email protected]>
>>>>> [email protected].
>>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>>> http://groups.google.com/group/sqlalchemy.
>>>>> For more options, visit <https://groups.google.com/d/optout>
>>>>> https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>>> 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 <[email protected]>
>>>> [email protected].
>>>> To post to this group, send email to <[email protected]>
>>>> [email protected].
>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>> http://groups.google.com/group/sqlalchemy.
>>>> For more options, visit <https://groups.google.com/d/optout>
>>>> https://groups.google.com/d/optout.
>>>>
>>>>
>>>> --
>>>> 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/eThubIMnL4o/unsubscribe>
>>>> https://groups.google.com/d/topic/sqlalchemy/eThubIMnL4o/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> <[email protected]>
>>>> [email protected].
>>>> To post to this group, send email to <[email protected]>
>>>> [email protected].
>>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>>> http://groups.google.com/group/sqlalchemy.
>>>> For more options, visit <https://groups.google.com/d/optout>
>>>> https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>>> 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 [email protected].
>>> To post to this group, send email to <[email protected]>
>>> [email protected].
>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>> http://groups.google.com/group/sqlalchemy.
>>> For more options, visit <https://groups.google.com/d/optout>
>>> https://groups.google.com/d/optout.
>>>
>>>
>>> --
>>> 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/eThubIMnL4o/unsubscribe>
>>> https://groups.google.com/d/topic/sqlalchemy/eThubIMnL4o/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> <[email protected]>
>>> [email protected].
>>> To post to this group, send email to <[email protected]>
>>> [email protected].
>>> Visit this group at <http://groups.google.com/group/sqlalchemy>
>>> http://groups.google.com/group/sqlalchemy.
>>> For more options, visit <https://groups.google.com/d/optout>
>>> https://groups.google.com/d/optout.
>>>
>>
>> --
>> 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 <[email protected]>
>> [email protected].
>> To post to this group, send email to <[email protected]>
>> [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>> --
>> 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/eThubIMnL4o/unsubscribe>
>> https://groups.google.com/d/topic/sqlalchemy/eThubIMnL4o/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To post to this group, send email to <[email protected]>
>> [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> 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/eThubIMnL4o/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to