Thanks for the solution!

But i get the warning for this query:
SELECT address.name AS address_lang, "user".name AS user_name
FROM addresses
LEFT OUTER JOIN "user" ON "user".id = address.user_id

Throws
sqlalchemy-0.5.0rc2dev_r5150-py2.5.egg\sqlalchemy\sql\expression.py:
1616: SAWarning: Column 'name' on table 'Select object' being replaced
by another column with the same key.  Consider use_labels for select()
statements.
  self[column.key] = column


On Oct 15, 5:09 pm, Ants Aasma <[EMAIL PROTECTED]> wrote:
> This seems to come up often. I took a few minutes and threw together a
> semi-robust way to do this on 0.5 series. I posted it under usage
> recipes in the wiki:http://www.sqlalchemy.org/trac/wiki/DebugInlineParams
> It has some flaws, but should be somewhat helpful for debugging.
>
> Ants
>
> On Oct 15, 2:42 pm, "alex bodnaru" <[EMAIL PROTECTED]> wrote:
>
> > hi friends,
>
> > i have a lot to learn from both approaches, but i have sadly appeared too 
> > lazy.
>
> > there will be no problem to imagine what the sql will be, only by
> > looking at the
> > template statement (with ?'s) and at the list of parameters.
>
> > since the template is available to print (probably by __str__), i'd
> > onlu ask where
> > the bindparams list is. eventual quotes and escapes may be imagined by
> > the types of
> > the columns.
>
> > thanks in advance,
> > alex
>
> > On Wed, Oct 15, 2008 at 12:54,  <[EMAIL PROTECTED]> wrote:
>
> > > i have another approach, which may or may not serve you.
> > > All those '?' are bindparams, and one can eventualy get them printed
> > > with their names - and put names where there aren't.
> > > that's what i needed, i guess replacing names with values would be
> > > easy job.
> > > the code is part of tests/convertertest.py of sqlalchemyAggregator,
> > >http://dev.gafol.net/t/aggregator/
> > > or
> > >http://dbcook.svn.sourceforge.net/viewvc/dbcook/trunk/dbcook/misc/agg...
>
> > > class T_mark( unittest.TestCase):
> > > ...
> > >    def setUp( self):
> > >        self.m = MetaData()
> > >        #hack for better visibility
> > >        def bp( self,bindparam):
> > >            if bindparam.value is not None:
> > >               return 'const('+repr(bindparam.value)+')'
> > >            k = bindparam.key
> > >            if k.startswith( Converter._pfx): #my own bindparams
> > >                k = k[ len( Converter._pfx):]
> > >            return 'BindParam('+k+')'
> > >        self.old_bp = DefaultCompiler._truncate_bindparam
> > >        DefaultCompiler._truncate_bindparam = bp
>
> > >    def tearDown( self):
> > >        DefaultCompiler._truncate_bindparam = self.old_bp
> > > ...
>
> > > str(expression) then does things like
> > > :const(True) AND :BindParam(oid) = movies.id
> > > tags.tabl = :const('movies') AND tags.oid = :BindParam(oid)
>
> > > there's some more stuff going on there around compatibility with SA
> > > 0.3--0.5, but that's core.
>
> > > ciao
> > > svil
>
> > > On Wednesday 15 October 2008 13:33:46 King Simon-NFHD78 wrote:
> > >> > -----Original Message-----
> > >> > From: [email protected]
> > >> > [mailto:[EMAIL PROTECTED] On Behalf Of alex bodnaru
> > >> > Sent: 15 October 2008 11:00
> > >> > To: SQLAlchemy
> > >> > Subject: [sqlalchemy] how to print a constructed query with
> > >> > it's parameters?
>
> > >> > hello friends,
>
> > >> > in order to debug my code, i wish to print my query sql.
>
> > >> > it's in the fashion of
> > >> > query =
> > >> > table.query().filter(table.code='XL').filter(table.name.like('
> > >> > %'+q+'%')
> > >> > with unicode parameters.
>
> > >> > by just printing query, i get the select with ? parameters, but
> > >> > not the additional parameters list, that contains ['XL',
> > >> > %q-value%]. since it doesn't presently work ok, i'd like to print
> > >> > the list as well.
>
> > >> > thanks in advance,
> > >> > alex
>
> > >> This question comes up a lot. For example, see
> > >>http://groups.google.com/group/sqlalchemy/browse_thread/thread/a060
> > >>2ede8 18f55c7
>
> > >> Firstly, if you use echo=True in your call to create_engine, all
> > >> SQL will be printed to stdout. The parameters will be displayed as
> > >> a list AFTER the SQL is printed.
>
> > >> Eg. (fromhttp://www.sqlalchemy.org/docs/05/ormtutorial.html)
>
> > >> BEGIN
> > >> INSERT INTO users (name, fullname, password) VALUES (?, ?, ?)
> > >> ['ed', 'Ed Jones', 'edspassword']
> > >> SELECT users.id AS users_id, users.name AS users_name,
> > >> users.fullname AS users_fullname, users.password AS users_password
> > >> FROM users
> > >> WHERE users.name = ?
> > >> LIMIT 1 OFFSET 0
> > >> ['ed']
>
> > >> You can control the logging more finely using the logging module -
> > >> see
> > >>http://www.sqlalchemy.org/docs/05/dbengine.html#dbengine_logging
> > >> for more details.
>
> > >> The problem is that SQLAlchemy doesn't ever replace those '?'
> > >> characters with the actual parameter values. Those strings are
> > >> passed directly to the DBAPI driver, along with the list of
> > >> parameter values. It is then up to the DBAPI driver how it passes
> > >> the query to the database. (This is why SQLAlchemy is fairly safe
> > >> from SQL Injection attacks).
>
> > >> Hope that helps,
>
> > >> Simon
>
>
--~--~---------~--~----~------------~-------~--~----~
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