better way?

someone petshmidt at googlemail.com
Tue Aug 11 12:33:52 EDT 2009


Hello,

I'd like to make insert into db if record not exist otherwise update.
to save typing list of columns in both statements I do following

query = "SELECT location FROM table WHERE location = %s AND id = %s;"
result = self._getResult(db, query, [location,id])

fields = ['id', 'location', 'wl', 'modified', 'counter', 'name']
if result:
    t = map(lambda s: s + ' = %s', fields)
    temp = ", ".join(t)
    query = "UPDATE table SET " + temp + " WHERE location = %s AND id
= %s;"
    self._execQuery(db, query, [id, location, self.wl, 'NOW()', 1,
name, location, id])
else:
    f = ", ".join(fields)
    query = """
        INSERT INTO table
        (""" + f + """)
        VALUES
        (%s,%s,%s,NOW()- interval '1 day', 1, %s)
    """
    self._execQuery(db, query, [id, location, self.wl, name])



is there better or more readable way to do it?

Pet



More information about the Python-list mailing list