2010-01-29 00:38:41 -05:00
|
|
|
import os.path
|
2010-01-24 21:29:02 -05:00
|
|
|
#! /usr/bin/python
|
|
|
|
|
|
|
|
# To change this template, choose Tools | Templates
|
|
|
|
# and open the template in the editor.
|
|
|
|
|
|
|
|
__author__="bjschuma"
|
|
|
|
__date__ ="$Jan 23, 2010 8:40:03 PM$"
|
|
|
|
|
|
|
|
from bt.file import checkPath
|
|
|
|
import sqlite3
|
|
|
|
import settings
|
|
|
|
from bt.file import *
|
|
|
|
|
|
|
|
|
|
|
|
def getdb():
|
|
|
|
return join(settings.get("appdir"), settings.get("appname")+".db")
|
|
|
|
|
|
|
|
|
2010-01-29 00:38:41 -05:00
|
|
|
def dbexists():
|
|
|
|
return checkPath(getdb())
|
|
|
|
|
|
|
|
|
2010-01-24 21:29:02 -05:00
|
|
|
def connect():
|
|
|
|
path = getdb()
|
|
|
|
con = sqlite3.connect(path)
|
|
|
|
con.text_factory = str
|
|
|
|
return con
|
|
|
|
|
|
|
|
|
|
|
|
def disconnect(con):
|
|
|
|
con.commit()
|
|
|
|
con.close()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Statement():
|
|
|
|
def __init__(self):
|
|
|
|
self.statement = ""
|
|
|
|
self.con = connect()
|
2010-01-30 14:40:17 -05:00
|
|
|
self.commit = True
|
2010-01-24 21:29:02 -05:00
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
self.con.close()
|
|
|
|
|
2010-01-30 14:40:17 -05:00
|
|
|
def commitdb(self):
|
2010-01-24 21:29:02 -05:00
|
|
|
self.con.commit()
|
|
|
|
|
|
|
|
def execute(self,vals=None):
|
|
|
|
if self.statement == "":
|
|
|
|
return
|
|
|
|
if vals==None:
|
2010-01-30 14:40:17 -05:00
|
|
|
result = self.con.execute(self.statement)
|
2010-01-24 21:29:02 -05:00
|
|
|
else:
|
2010-01-30 14:40:17 -05:00
|
|
|
result = self.con.execute(self.statement,vals)
|
|
|
|
|
|
|
|
if self.commit == True:
|
|
|
|
self.commitdb()
|
|
|
|
return result
|
2010-01-24 21:29:02 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CTable(Statement):
|
|
|
|
def __init__(self,name):
|
|
|
|
Statement.__init__(self)
|
|
|
|
self.name = name
|
|
|
|
self.cols = []
|
|
|
|
|
|
|
|
def addcol(self,name,type,params=""):
|
|
|
|
self.cols += [(name,type,params)]
|
|
|
|
|
|
|
|
def execute(self):
|
|
|
|
self.statement = "CREATE TABLE "+self.name + " ("
|
|
|
|
for index,col in enumerate(self.cols):
|
|
|
|
if not index == 0:
|
|
|
|
self.statement += ", "
|
|
|
|
self.statement += " " + col[0] + " " + col[1] + " " + col[2]
|
|
|
|
self.statement += " );"
|
|
|
|
return Statement.execute(self)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Select(Statement):
|
|
|
|
def __init__(self,What,From,Where=None):
|
|
|
|
Statement.__init__(self)
|
2010-01-30 14:40:17 -05:00
|
|
|
self.commit = False
|
2010-01-24 21:29:02 -05:00
|
|
|
self.What = What
|
|
|
|
self.From = From
|
|
|
|
self.Where = Where
|
|
|
|
|
|
|
|
def execute(self):
|
|
|
|
self.statement = "SELECT " + self.What
|
|
|
|
self.statement += " FROM " + self.From
|
|
|
|
if not self.Where==None:
|
|
|
|
self.statement += " WHERE " + self.Where
|
|
|
|
return Statement.execute(self)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Insert(Statement):
|
|
|
|
def __init__(self,table,values=[]):
|
|
|
|
Statement.__init__(self)
|
|
|
|
self.table = table
|
|
|
|
self.values = values
|
|
|
|
|
|
|
|
def addval(self,val):
|
|
|
|
self.values += [val]
|
|
|
|
|
|
|
|
def execute(self):
|
|
|
|
self.statement = "INSERT INTO "+ self.table + " VALUES("
|
|
|
|
qs = ""
|
|
|
|
for i in range(len(self.values)):
|
|
|
|
if not i == 0:
|
|
|
|
qs+=","
|
|
|
|
qs+="?"
|
2010-02-07 19:32:29 -05:00
|
|
|
#self.values[i] = str(self.values[i])
|
2010-01-24 21:29:02 -05:00
|
|
|
self.statement+=qs + ")"
|
|
|
|
Statement.execute(self, self.values)
|
|
|
|
|
2010-01-30 14:40:17 -05:00
|
|
|
|
|
|
|
|
|
|
|
class Remove(Statement):
|
|
|
|
def __init__(self,table,where=""):
|
|
|
|
Statement.__init__(self)
|
|
|
|
self.table = table
|
|
|
|
self.where = where
|
|
|
|
|
|
|
|
def execute(self):
|
|
|
|
self.statement = "DELETE FROM " + self.table
|
|
|
|
if not self.where=="":
|
|
|
|
self.statement += " WHERE "+self.where
|
|
|
|
Statement.execute(self)
|