Re: [sqlalchemy] utf8 error upon insert

2016-06-10 Thread Ven Karri
upgrading pymysql did the trick. thank you.

On Thursday, June 9, 2016 at 12:02:29 PM UTC-4, Mike Bayer wrote:
>
>
> VARBINARY should not have a utf-8 encoding step at all.  I can replace 
> VARBINARY directly in my script and there's no problem; can you upgrade 
> your pymysql?  I seem to recall someone having this problem recently. 
>
>
> Also please run the script below (with your database URL) and send the 
> full output, as it will include things like the SQL MODE you're running 
> and other things: 
>
> from sqlalchemy import * 
> from sqlalchemy.orm import * 
> from sqlalchemy.ext.declarative import declarative_base 
>
> Base = declarative_base() 
>
>
> class A(Base): 
>  __tablename__ = 'a' 
>  id = Column(Integer, primary_key=True) 
>  data = Column(VARBINARY(255)) 
>
> e = create_engine("mysql+pymysql://scott:tiger@localhost/test", echo=True) 
> Base.metadata.drop_all(e) 
> Base.metadata.create_all(e) 
>
> gcm_key = 
> '\xfeE\x87\xe7\xc9\xe5\xec\xe0\x9c\xd6\x85\x11\xc7\xebd\xe3\x7f\xd9\xfel\xe6\x86"j\xbe=\xf4\xd7\x95\x99F\x8f'
>  
>
>
> s = Session(e) 
> s.add(A(data=gcm_key)) 
> s.commit() 
>
>
>
> On 06/09/2016 11:16 AM, Ven Karri wrote: 
> > The only difference is that I am using sqlalchemy.types.VARBINARY(256) 
> > instead of String(255) 
> > 
> > On Thursday, June 9, 2016 at 10:47:32 AM UTC-4, Mike Bayer wrote: 
> > 
> > what charset is in your my.cnf and/or how are you connecting.  Mine 
> > only 
> > produces a warning.  Here is an MCVE (definition: I can actually run 
> > it): 
> > 
> > from sqlalchemy import * 
> > from sqlalchemy.orm import * 
> > from sqlalchemy.ext.declarative import declarative_base 
> > 
> > Base = declarative_base() 
> > 
> > 
> > class A(Base): 
> >  __tablename__ = 'a' 
> >  id = Column(Integer, primary_key=True) 
> >  data = Column(String(255)) 
> > 
> > e = create_engine("mysql+pymysql://scott:tiger@localhost/test", 
> > echo=True) 
> > Base.metadata.create_all(e) 
> > 
> > gcm_key = 
> > 
> '\xfeE\x87\xe7\xc9\xe5\xec\xe0\x9c\xd6\x85\x11\xc7\xebd\xe3\x7f\xd9\xfel\xe6\x86"j\xbe=\xf4\xd7\x95\x99F\x8f'
>  
>
> > 
> > 
> > s = Session(e) 
> > s.add(A(data=gcm_key)) 
> > s.commit() 
> > 
> > 
> > 
> > 
> > output: 
> > 
> > python test.py 
> > 
> /home/classic/.venv/lib/python2.7/site-packages/pymysql/cursors.py:146: 
> > Warning: Table 'test' already exists 
> >result = self._query(query) 
> > 
> /home/classic/.venv/lib/python2.7/site-packages/pymysql/cursors.py:146: 
> > Warning: Incorrect string value: '\xFEE\x87\xE7\xC9\xE5...' for 
> column 
> > 'data' at row 1 
> >result = self._query(query) 
> > 
> > 
> > please run this script and modify it to show your error thanks! 
> > 
> > 
> > 
> > 
> > 
> > On 06/09/2016 10:42 AM, Ven Karri wrote: 
> > > Any ideas? 
> > > 
> > > On Thursday, June 9, 2016 at 10:21:27 AM UTC-4, Ven Karri wrote: 
> > > 
> > > Using, python 2.7 using 'mysql+pymysql' driver 
> > > 
> > > Code is very simple: 
> > > 
> > > gcm_key = 
> > > 
> > 
> '\xfeE\x87\xe7\xc9\xe5\xec\xe0\x9c\xd6\x85\x11\xc7\xebd\xe3\x7f\xd9\xfel\xe6\x86"j\xbe=\xf4\xd7\x95\x99F\x8f'
>  
>
> > 
> > > model = Sample(gcm_key=gcm_key) 
> > > session.add(model) 
> > > 
> > > Now what you said is to make it u'some string'. The string in 
> > > question here is the gcm_key. So, I did this: 
> > > 
> > > gcm_key = gcm_key.decode('utf8') 
> > > 
> > > That throws an error: 
> > > 
> > > UnicodeDecodeError: 'utf8' codec can't decode byte 0xfe in 
> > position 
> > > 0: invalid start byte 
> > > 
> > > On Thursday, June 9, 2016 at 10:04:49 AM UTC-4, Mike Bayer 
> wrote: 
> > > 
> > > 
> > > 
> > > On 06/09/2016 09:52 AM, Ven Karri wrote: 
> > > > I am getting a UTF-8 error upon insert using sql alchemy 
> > ORM. 
> > > The same 
> > > > query runs fine when I run using raw sql. Here's the ORM 
> > query: 
> > > > 
> > > > rotating_keys_object = rotating_keys_model( 
> > > > gcm_key=rot_gcm_key, 
> > > > nonce=rot_nonce, 
> > > > tag=rot_tag, 
> > > > operational_team_id=self.operational_team_id 
> > > > ) 
> > > > session.add(rotating_keys_object) 
> > > > 
> > > > Here's the error: 
> > > > 
> > > > DatabaseError: (raised as a result of Query-invoked 
> > autoflush; 
> > > consider 
> > > > using a session.no_autoflush block if this flush is 
> > occurring 
> > > > prematurely) (DatabaseError) 1300: Invalid utf8 
> > character string: 
> > > > 'FE4587' 

Re: [sqlalchemy] "CompileError: Multiple, unrelated CTEs found with the same name" when using column property

2016-06-10 Thread Mike Bayer
It's probably something small.   A bb issue would be targeted at 1.0.x if
you want to put one up

On Friday, June 10, 2016, Adrian  wrote:

> Unless there'll be a release fixing this soon-ish: Is there any workaround
> that doesn't require patching the sqlalchemy to avoid the issue?
> Otherwise I'd probably go for a hack like this:
>
> @contextmanager
> def dirty_hack():
> orig = sqlalchemy.orm.properties._orm_full_deannotate
> sqlalchemy.orm.properties._orm_full_deannotate = lambda x: x
> try:
> yield
> finally:
> sqlalchemy.orm.properties._orm_full_deannotate = orig
>
> and then wrap the creation of the column property in this contextmanager.
> But I don't know whether skipping the deannotate step might cause other
> issues...
>
> --
> 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 https://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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.


Re: [sqlalchemy] "CompileError: Multiple, unrelated CTEs found with the same name" when using column property

2016-06-10 Thread Adrian
Unless there'll be a release fixing this soon-ish: Is there any workaround 
that doesn't require patching the sqlalchemy to avoid the issue?
Otherwise I'd probably go for a hack like this:

@contextmanager
def dirty_hack():
orig = sqlalchemy.orm.properties._orm_full_deannotate
sqlalchemy.orm.properties._orm_full_deannotate = lambda x: x
try:
yield
finally:
sqlalchemy.orm.properties._orm_full_deannotate = orig

and then wrap the creation of the column property in this contextmanager. 
But I don't know whether skipping the deannotate step might cause other 
issues...

-- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.