[Tutor] Building an SQL query

Gabriel Farrell gsf at panix.com
Fri Jun 3 20:07:10 CEST 2005


On Thu, Jun 02, 2005 at 10:41:20PM +0100, Alan G wrote:
> Why not convert the list to a tuple before applying str():
> 
> str(tuple(ids_to_process))

I'm just getting started with Python and PostgreSQL but I found that
str(tuple(valueList)) wouldn't work for me because I had a few values
with apostrophes.  PostgreSQL needed 'Lion''s Mane' but Python was
sending it "Lion's Mane", so I ended up writing this little function:

def sqlNice(valueList):
    count = 1
    y = '('
    for x in valueList:
        x = x.replace("'", "''")
        y = y + "'" + x + "'"
        if count < len(valueList):
            y = y + ', '
        count = count + 1
    y = y + ')'
    y = y.replace("'NULL'", 'NULL')
    return y

Does anyone see any major stumbling blocks in that?  

On a side note, I've struggled with PyGreSQL.  At first I was using
the pg module, but I switched to pgdb when insert() wasn't working for
me and I thought I would have less trouble using something that's
DB-API compliant.  There seemed to be more documentation there, and I
figured it's a good idea to go with the standard.  However, it does
seem like I'm covering ground I'm sure someone else has already
crossed when I create these re functions to manipulate queries.  For
inserts, at least, it seems a Python dictionary should be able to do
the job nicely.

gabe


More information about the Tutor mailing list