diff options
author | Sean Finney <seanius@debian.org> | 2008-06-24 20:33:31 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2008-06-24 20:33:31 +0200 |
commit | 67c5f922af0295baa5a05571aa0090424c53ff1f (patch) | |
tree | edc2c6fe6e4282b4a15251f3df43662eb0b9181e /patchtracker | |
parent | cd7927dbcaabf7958ccffb0e4daaaf2e9a0a9b08 (diff) | |
download | patch-tracker-67c5f922af0295baa5a05571aa0090424c53ff1f.tar.gz |
slightly optimize query logic w/ INSERT OR REPLACE
Diffstat (limited to 'patchtracker')
-rw-r--r-- | patchtracker/DB.py | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/patchtracker/DB.py b/patchtracker/DB.py index d74744d..eefff82 100644 --- a/patchtracker/DB.py +++ b/patchtracker/DB.py @@ -53,23 +53,13 @@ class PatchTrackerDB: def saveSourcePackage(self, srcpkg): cursor = self.db.cursor() - s = self.findSourcePackage(srcpkg) - - queryargs = (srcpkg.name,srcpkg.format,srcpkg.loc, - srcpkg.version,srcpkg.diffgz_name,srcpkg.diffgz_size, - srcpkg.diffgz_md5sum) - if not s: - #print "creating new record for",srcpkg - q = "INSERT INTO packages (id,name,format,loc,version,\ + #print "creating new record for",srcpkg + q = "INSERT OR REPLACE INTO packages (id,name,format,loc,version,\ diffgz_name,diffgz_size,diffgz_md5sum)\ VALUES ((SELECT MAX(id)+1 FROM packages),?,?,?,?,?,?,?)" - else: - #print "updating record for",srcpkg - q = "UPDATE packages SET name=?,format=?,loc=?,version=?,\ - diffgz_name=?,diffgz_size=?,diffgz_md5sum=?\ - WHERE name=? AND version=?" - queryargs += (srcpkg.name, srcpkg.version) - cursor.execute(q, queryargs) + cursor.execute(q, (srcpkg.name,srcpkg.format,srcpkg.loc, + srcpkg.version,srcpkg.diffgz_name,srcpkg.diffgz_size, + srcpkg.diffgz_md5sum)) def findSuite(self, suite): q = "SELECT * FROM suites WHERE name = ?" @@ -141,17 +131,12 @@ class PatchTrackerDB: return cursor.fetchone() def relateSourcePackage(self, srcpkg, suite, component): - s = self.findSourcePackageRelation(srcpkg, suite) - if not s: - s = self.findSourcePackage(srcpkg) - q = "INSERT INTO package_rel_map (package_id,suite_id,component_id) \ - VALUES (?, \ - (SELECT id FROM suites WHERE name=?), \ - (SELECT id FROM components WHERE name=?))" - else: - q = "UPDATE package_rel_map SET package_id=? \ - WHERE suite_id=(SELECT id FROM suites WHERE name=?) \ - AND component_id=(SELECT id FROM components WHERE name=?)" + s = self.findSourcePackage(srcpkg) + q = "INSERT OR REPLACE INTO package_rel_map \ + (package_id,suite_id,component_id) \ + VALUES (?, \ + (SELECT id FROM suites WHERE name=?), \ + (SELECT id FROM components WHERE name=?))" cursor = self.db.cursor() cursor.execute(q, (s[0], suite, component)) |