On Oct 26, 2005, at 2:47 AM, m wrote:



PTL is the best new idea from Quixote IMO. I was thinking if it made sense to extend the idea to SQL. For example:

class Accounts:
    database = 'customer'

    def getAccountName [sql] (account_id):
        "SELECT name FROM accounts WHERE account_id=%s" % account_id

Calling the method would not only create the SQL string but also execute it and return the query results.

This would enable very clean Python-oriented database access layers.

it would be hideous

ptl outputs plain text, in what form would expect the result set to be in ?


An iterator over dictionaries or tuples?

You would also have to escape the output to take into account newlines and tabs etc. in the result set.

As an unbounded mass of text, goodbye memory when 500Mb of plain text suddenly gets returned.

What about escaping the parameters.
In your example the string is auto wrapped in ' ' and how will the engine know when to escape % ?


This would be SQL-escaped similar to the way HTML is escaped within PTL currently (i.e. an sqltext object similar to the present htmltext).

demonstrated here :

t = 'the amount is 20% over 5 years'

"select a from b where c = '%s' or d like '%%%s%%'" % (t, t)


The above would fire the SQL:
select a from b where c = 'the amount is 20\% over 5 years' or d like '%the amount is 20\% over 5 years%'" % (t, t)

This works just like strings, except the SQL characters (like single quote, percent sign) will be escaped by the % operator on sqltext.

There is definitely one problem with clutter - since % is generally used a more in SQL than in HTML. This wouldn't replace the DB API, just be a layer on top. On second thoughts, it doesn't seem to add a whole lot of functionality, though it does seem to promote a single way of writing SQL in your code.

Shalabh

_______________________________________________
Quixote-users mailing list
[email protected]
http://mail.mems-exchange.org/mailman/listinfo/quixote-users

Reply via email to