I notice that you use pg8000, you may also try with psycopg2 instead...

Richard



On Wed, Nov 18, 2015 at 11:34 AM, Richard Vézina <
[email protected]> wrote:

> I didn't know about the placeholder argument, though the documentation
> says that it may not works for all the backend, is your database support it?
>
> Documentation :
> In this case, the return values are not parsed or transformed by the DAL,
> and the format depends on the specific database driver. This usage with
> selects is normally not needed, but it is more common with indexes.
> executesql takes four optional arguments: placeholders, as_dict, fields
>  andcolnames. placeholders is an optional sequence of values to be
> substituted in or, if supported by the DB driver, a dictionary with keys
> matching named placeholders in your SQL.
>
>
>
> On Wed, Nov 18, 2015 at 6:46 AM, Pierre <[email protected]> wrote:
>
>> Hi everyone,
>>
>> I cannot run an executesql command with the placeholders argument. Is
>> there a robust example somewhere to use as a reference ?
>> I need to pass string and float variables via placeholders
>>
>> I use a postgresql database
>>
>> test code is
>>
>> def test():
>>     tablename = 'tablex'
>>     query = 'select * from  %s'
>>     result = db.executesql(query,placeholders=(tablename,))
>>     return locals()
>>
>> and the traceback:
>>
>> <class 'gluon.contrib.pg8000.ProgrammingError'> ('ERROR', '42601',
>> 'syntax error at or near "$1"') Version web2py™ Version
>> 2.12.3-stable+timestamp.2015.08.19.00.18.03 Traceback
>>
>> 1.
>> 2.
>> 3.
>> 4.
>> 5.
>> 6.
>> 7.
>> 8.
>> 9.
>> 10.
>> 11.
>> 12.
>> 13.
>> 14.
>> 15.
>> 16.
>> 17.
>> 18.
>> 19.
>> 20.
>> 21.
>> 22.
>> 23.
>> 24.
>>
>> Traceback (most recent call last):
>>   File "/opt/web2py/gluon/restricted.py", line 227, in restricted
>>     exec ccode in environment
>>   File "/opt/web2py/applications/proxima/controllers/default.py" 
>> <http://127.0.0.1:8000/admin/default/edit/proxima/controllers/default.py>, 
>> line 89, in <module>
>>   File "/opt/web2py/gluon/globals.py", line 412, in <lambda>
>>     self._caller = lambda f: f()
>>   File "/opt/web2py/applications/proxima/controllers/default.py" 
>> <http://127.0.0.1:8000/admin/default/edit/proxima/controllers/default.py>, 
>> line 41, in test
>>     result = db.executesql(query,placeholders=(tablename,))
>>   File "/opt/web2py/gluon/packages/dal/pydal/base.py", line 998, in 
>> executesql
>>     adapter.execute(query, placeholders)
>>   File "/opt/web2py/gluon/packages/dal/pydal/adapters/postgres.py", line 
>> 360, in execute
>>     return BaseAdapter.execute(self, *a, **b)
>>   File "/opt/web2py/gluon/packages/dal/pydal/adapters/base.py", line 1378, 
>> in execute
>>     return self.log_execute(*a, **b)
>>   File "/opt/web2py/gluon/packages/dal/pydal/adapters/base.py", line 1372, 
>> in log_execute
>>     ret = self.cursor.execute(command, *a[1:], **b)
>>   File "/opt/web2py/gluon/contrib/pg8000/core.py", line 573, in execute
>>     self._c.execute(self, operation, args)
>>   File "/opt/web2py/gluon/contrib/pg8000/core.py", line 1626, in execute
>>     self.handle_messages(cursor)
>>   File "/opt/web2py/gluon/contrib/pg8000/core.py", line 1774, in 
>> handle_messages
>>     raise self.error
>> ProgrammingError: ('ERROR', '42601', 'syntax error at or near "$1"')
>>
>>
>>
>> --
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to