summaryrefslogtreecommitdiff
path: root/patchtracker
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2008-06-24 20:33:31 +0200
committerSean Finney <seanius@debian.org>2008-06-24 20:33:31 +0200
commit67c5f922af0295baa5a05571aa0090424c53ff1f (patch)
treeedc2c6fe6e4282b4a15251f3df43662eb0b9181e /patchtracker
parentcd7927dbcaabf7958ccffb0e4daaaf2e9a0a9b08 (diff)
downloadpatch-tracker-67c5f922af0295baa5a05571aa0090424c53ff1f.tar.gz
slightly optimize query logic w/ INSERT OR REPLACE
Diffstat (limited to 'patchtracker')
-rw-r--r--patchtracker/DB.py37
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))