ocarina/src/extra/et/sql.py

137 lines
2.5 KiB
Python

import os.path
#! /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$"
import sqlite3
#import settings
from ct.path import *
import ocarina
def getdb():
return join(ocarina.vars.OCARINA,"ocarina.db")
def dbexists():
return exists(getdb())
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()
self.commit = True
def __del__(self):
self.con.close()
def commitdb(self):
self.con.commit()
def execute(self,vals=None):
if self.statement == "":
return
if vals==None:
result = self.con.execute(self.statement)
else:
result = self.con.execute(self.statement,vals)
if self.commit == True:
self.commitdb()
return result
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)
self.commit = False
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+="?"
#self.values[i] = str(self.values[i])
self.statement+=qs + ")"
Statement.execute(self, self.values)
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)