is this followings two instructions compulsory while defining new type? m.drop_all(e) m.create_all(e)
this instructions are not feasible , because DB team already defined schema and normal user can not drop and create table. On Tue, Aug 4, 2015 at 8:59 PM, Mike Bayer <[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]> > 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]. >>> 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.
