diff options
author | Sean Finney <seanius@debian.org> | 2008-06-08 20:10:14 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2008-06-11 22:15:28 +0200 |
commit | a924b7efb5e88b1c35b999989fc77caf7bcd0379 (patch) | |
tree | dbc7fb8c5790df8b20ea989914d81e4a39957ea1 /patchtracker | |
parent | bf1d3cd47db3d28a5f1be77d3676cd2b1af385a9 (diff) | |
download | patch-tracker-a924b7efb5e88b1c35b999989fc77caf7bcd0379.tar.gz |
saving some work on sqlite related stuff
Diffstat (limited to 'patchtracker')
-rw-r--r-- | patchtracker/DB.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/patchtracker/DB.py b/patchtracker/DB.py new file mode 100644 index 0000000..2f1b208 --- /dev/null +++ b/patchtracker/DB.py @@ -0,0 +1,68 @@ +from pysqlite2 import dbapi2 as sqlite +import Conf as Conf +import os +import errno +import time + + +class PatchTrackerDB: + db = None + now = None + cursor = None + + def __init__(self, dbname=Conf.database): + self.now = int(time.time()) + self.db = sqlite.connect(dbname) + self.cursor = self.db.cursor() + self.cursor.execute("SELECT * FROM sqlite_master WHERE name='packages'") + if not self.cursor.fetchone(): + print "repopulating empty database..." + for l in file(Conf.sqlschema).readlines(): + self.cursor.execute(l) + + def findSourcePackage(self, srcpkg): + q = "SELECT * FROM packages WHERE package = ? AND version = ?" + self.cursor.execute(q, (srcpkg.name, srcpkg.version)) + s = self.cursor.fetchone() + return s + + def saveSourcePackage(self, srcpkg): + s = self.findSourcePackage(srcpkg) + if not s: + print "creating new record for",srcpkg + q = "INSERT INTO packages (package,format,diffgz,loc,type,version,updated) VALUES (?,?,?,?,?,?,?)" + else: + print "updating record for",srcpkg + q = "UPDATE packages SET package=?,format=?,diffgz=?,loc=?,type=?,version=?,updated=?" + self.cursor.execute(q, (srcpkg.name,srcpkg.format,srcpkg.diffgz,srcpkg.loc,srcpkg.type,srcpkg.version,self.now)) + + def findRelease(self, release) + raise Exception("not yet implemented") + + def saveRelease(self, release) + raise Exception("not yet implemented") + + def findComponent(self, release, component): + raise Exception("not yet implemented") + + def saveComponent(self, component): + raise Exception("not yet implemented") + + def relateComponentToSourcePackage(self, component, srcpkg): + raise Exception("not yet implemented") + + def finalize(self): + # remove cruft in a rather lazy way + self.cursor.execute("DELETE FROM packages WHERE updated < ?", (self.now,)) + self.db.commit() + + +if __name__ == "__main__": + print "patch tracker db testing" + d = PatchTrackerDB(dbname="foo.db") + from SourceArchive import SourcePackage + sp = SourcePackage({'Package':'foo','Format':'blah','Directory':'/foo','Version':'1.2.3.4','Files':[]}) + d.saveSourcePackage(sp) + d.finalize() + + |