[pyar] DB Api 2 y escape de parametros

Ramiro Morales cramm0 en gmail.com
Lun Dic 27 12:59:18 ART 2010


2010/12/27 marrese en gmail.com <marrese en gmail.com>:
> 2010/12/27 Daniel Moisset <dmoisset en machinalis.com>:
> [...]
>
>> Te sugiero usar un ORM que soporte ambas (probablemente casi
>> cualquiera) si queres realmente abstraerte de la DB; no solo el
>> formato de las marcas de argumentos, sino detalles de como se hacen la
>> consulta, como se convierten los datos que te manda la DB, etc.
>
> Daniel,
>
> Gracias por la respuesta, te comento que ya estamos usando SQLAlchemy
> pero como la estructura de tablas no es buena, ni esta siquiera cerca
> de eso no podemos aprovecharnos de la funcionalidad de ORM que provee.
> Si bien podriamos usar los builders de queries que tiene, aca hay una
> idea de tener mas control sobre las queries, asi que ya descartaron
> eso tambien. Es por esto que estoy buscando la forma mas simple y
> estandar de hacerlo.

Dos ideas, la primera sin experiencia real y un poc tirada de los pelos
y la segunda un poco mas concreta:

Primera:

En SA a lo mejor podes no usar el ORM ni el SQL Expression engine, pero
si usar.

Sería el bloque de la izquierda en este gráfico:

http://www.sqlalchemy.org/docs/intro.html#overview

Aca hay documentación sobre los Engines y las Connections

  http://www.sqlalchemy.org/docs/core/connections.html

pero no da muchos detalles sobre qué tipo de abstracción
de quoting de parámetros hace, si es que lo hace.

Segunda:

Podés copiar alguna idea/código de Django que usa el estilo format
y en el caso de SQLite usa el parámetro factory de connection.cursor()
para usar una sub-clase de Cursor que hace la conversión a qmark:

http://code.djangoproject.com/browser/django/tags/releases/1.2.4/django/db/backends/sqlite3/base.py#L180
http://code.djangoproject.com/browser/django/tags/releases/1.2.4/django/db/backends/sqlite3/base.py#L191
http://code.djangoproject.com/browser/django/tags/releases/1.2.4/django/db/backends/sqlite3/base.py#L215

En mysql parece no haber necesidad de hacer ese tipo de adaptación,
seguramente porque el adaptador DB-API2 ya usa el estilo format.

Suerte,

-- 
Ramiro Morales



More information about the pyar mailing list