Module pedsql

Expand source code
#!/usr/bin/env python

from __future__ import absolute_import
from __future__ import print_function
import sys, os, time, sqlite3

# Replaces g c o n f, so it is less platforrm dependent 

class pedsql():

    def __init__(self, file):
    
        #self.take = 0
        
        try:
            self.conn = sqlite3.connect(file)
        except:
            print("Cannot open/create db:", file, sys.exc_info()) 
            return            
        try:
            self.c = self.conn.cursor()
            # Create table
            self.c.execute("create table if not exists config \
             (pri INTEGER PRIMARY KEY, key text, val text)")
            self.c.execute("create index if not exists iconfig on config (key)")            
            self.c.execute("create index if not exists pconfig on config (pri)")            
            self.c.execute("PRAGMA synchronous=OFF")
            # Save (commit) the changes
            self.conn.commit()            
        except:
            print("Cannot insert sql data", sys.exc_info()) 
             
        finally:    
            # We close the cursor, we are done with it
            #c.close()    
            pass
                            
    # --------------------------------------------------------------------        
    # Return None if no data
    
    def   get(self, kkk):
        try:      
            #c = self.conn.cursor()            
            if os.name == "nt":
                self.c.execute("select * from config where key = ?", (kkk,))
            else: 
                self.c.execute("select * from config indexed by iconfig where key = ?", (kkk,))
            rr = self.c.fetchone()
        except:
            print("Cannot get sql data", sys.exc_info()) 
            rr = None
        finally:
            #c.close   
            pass
        if rr:            
            return rr[2]
        else:
            return None

    # --------------------------------------------------------------------        
    # Return zero if no data
    
    def get_int(self, kkk):
        ret = self.get(kkk)
        if ret: 
            return int(float(ret))        
        else:   
            return int(0)

    # --------------------------------------------------------------------        
    # Return empty if no data
    
    def get_str(self, kkk):
        ret = self.get(kkk)
        if ret: 
            return str(ret)        
        else:   
            return ""
    
    # --------------------------------------------------------------------        
    # Return False if cannot put data
    
    def   put(self, key, val):
    
        #got_clock = time.clock()         
        
        ret = True  
        try:      
            #c = self.conn.cursor()
            if os.name == "nt":
                self.c.execute("select * from config where key == ?", (key,))
            else: 
                self.c.execute("select * from config indexed by iconfig where key == ?", (key,))            
            rr = self.c.fetchall()
            if rr == []:
                #print "inserting"
                self.c.execute("insert into config (key, val) \
                    values (?, ?)", (key, val))
            else:
            
                #print "updating"
                if os.name == "nt":
                    self.c.execute("update config set val = ? where key = ?",\
                                     (val, key))                                     
                else: 
                    self.c.execute("update config indexed by iconfig set val = ? where key = ?",\
                                     (val, key))                                     
            self.conn.commit()          
        except:
            print("Cannot put sql data", sys.exc_info())             
            ret = False  
        finally:
            #c.close     
            pass

        #self.take += time.clock() - got_clock        
          
        return ret
  
    # --------------------------------------------------------------------        
    # Get All
    
    def   getall(self):
        try:      
            #c = self.conn.cursor()
            self.c.execute("select * from config")
            rr = self.c.fetchall()
        except:
            print("Cannot get sql data", sys.exc_info()) 
        finally:
            #c.close   
            pass
        return rr
        
    # --------------------------------------------------------------------        
    # Return None if no data
    
    def   rmall(self):
        print("removing all")
        try:      
            #c = self.conn.cursor()
            self.c.execute("delete from config")
            rr = self.c.fetchone()
        except:
            print("Cannot delete sql data", sys.exc_info()) 
        finally:
            #c.close   
            pass
        if rr:            
            return rr[1]
        else:
            return None

Classes

class pedsql (file)
Expand source code
class pedsql():

    def __init__(self, file):
    
        #self.take = 0
        
        try:
            self.conn = sqlite3.connect(file)
        except:
            print("Cannot open/create db:", file, sys.exc_info()) 
            return            
        try:
            self.c = self.conn.cursor()
            # Create table
            self.c.execute("create table if not exists config \
             (pri INTEGER PRIMARY KEY, key text, val text)")
            self.c.execute("create index if not exists iconfig on config (key)")            
            self.c.execute("create index if not exists pconfig on config (pri)")            
            self.c.execute("PRAGMA synchronous=OFF")
            # Save (commit) the changes
            self.conn.commit()            
        except:
            print("Cannot insert sql data", sys.exc_info()) 
             
        finally:    
            # We close the cursor, we are done with it
            #c.close()    
            pass
                            
    # --------------------------------------------------------------------        
    # Return None if no data
    
    def   get(self, kkk):
        try:      
            #c = self.conn.cursor()            
            if os.name == "nt":
                self.c.execute("select * from config where key = ?", (kkk,))
            else: 
                self.c.execute("select * from config indexed by iconfig where key = ?", (kkk,))
            rr = self.c.fetchone()
        except:
            print("Cannot get sql data", sys.exc_info()) 
            rr = None
        finally:
            #c.close   
            pass
        if rr:            
            return rr[2]
        else:
            return None

    # --------------------------------------------------------------------        
    # Return zero if no data
    
    def get_int(self, kkk):
        ret = self.get(kkk)
        if ret: 
            return int(float(ret))        
        else:   
            return int(0)

    # --------------------------------------------------------------------        
    # Return empty if no data
    
    def get_str(self, kkk):
        ret = self.get(kkk)
        if ret: 
            return str(ret)        
        else:   
            return ""
    
    # --------------------------------------------------------------------        
    # Return False if cannot put data
    
    def   put(self, key, val):
    
        #got_clock = time.clock()         
        
        ret = True  
        try:      
            #c = self.conn.cursor()
            if os.name == "nt":
                self.c.execute("select * from config where key == ?", (key,))
            else: 
                self.c.execute("select * from config indexed by iconfig where key == ?", (key,))            
            rr = self.c.fetchall()
            if rr == []:
                #print "inserting"
                self.c.execute("insert into config (key, val) \
                    values (?, ?)", (key, val))
            else:
            
                #print "updating"
                if os.name == "nt":
                    self.c.execute("update config set val = ? where key = ?",\
                                     (val, key))                                     
                else: 
                    self.c.execute("update config indexed by iconfig set val = ? where key = ?",\
                                     (val, key))                                     
            self.conn.commit()          
        except:
            print("Cannot put sql data", sys.exc_info())             
            ret = False  
        finally:
            #c.close     
            pass

        #self.take += time.clock() - got_clock        
          
        return ret
  
    # --------------------------------------------------------------------        
    # Get All
    
    def   getall(self):
        try:      
            #c = self.conn.cursor()
            self.c.execute("select * from config")
            rr = self.c.fetchall()
        except:
            print("Cannot get sql data", sys.exc_info()) 
        finally:
            #c.close   
            pass
        return rr
        
    # --------------------------------------------------------------------        
    # Return None if no data
    
    def   rmall(self):
        print("removing all")
        try:      
            #c = self.conn.cursor()
            self.c.execute("delete from config")
            rr = self.c.fetchone()
        except:
            print("Cannot delete sql data", sys.exc_info()) 
        finally:
            #c.close   
            pass
        if rr:            
            return rr[1]
        else:
            return None

Methods

def get(self, kkk)
Expand source code
def   get(self, kkk):
    try:      
        #c = self.conn.cursor()            
        if os.name == "nt":
            self.c.execute("select * from config where key = ?", (kkk,))
        else: 
            self.c.execute("select * from config indexed by iconfig where key = ?", (kkk,))
        rr = self.c.fetchone()
    except:
        print("Cannot get sql data", sys.exc_info()) 
        rr = None
    finally:
        #c.close   
        pass
    if rr:            
        return rr[2]
    else:
        return None
def get_int(self, kkk)
Expand source code
def get_int(self, kkk):
    ret = self.get(kkk)
    if ret: 
        return int(float(ret))        
    else:   
        return int(0)
def get_str(self, kkk)
Expand source code
def get_str(self, kkk):
    ret = self.get(kkk)
    if ret: 
        return str(ret)        
    else:   
        return ""
def getall(self)
Expand source code
def   getall(self):
    try:      
        #c = self.conn.cursor()
        self.c.execute("select * from config")
        rr = self.c.fetchall()
    except:
        print("Cannot get sql data", sys.exc_info()) 
    finally:
        #c.close   
        pass
    return rr
def put(self, key, val)
Expand source code
def   put(self, key, val):

    #got_clock = time.clock()         
    
    ret = True  
    try:      
        #c = self.conn.cursor()
        if os.name == "nt":
            self.c.execute("select * from config where key == ?", (key,))
        else: 
            self.c.execute("select * from config indexed by iconfig where key == ?", (key,))            
        rr = self.c.fetchall()
        if rr == []:
            #print "inserting"
            self.c.execute("insert into config (key, val) \
                values (?, ?)", (key, val))
        else:
        
            #print "updating"
            if os.name == "nt":
                self.c.execute("update config set val = ? where key = ?",\
                                 (val, key))                                     
            else: 
                self.c.execute("update config indexed by iconfig set val = ? where key = ?",\
                                 (val, key))                                     
        self.conn.commit()          
    except:
        print("Cannot put sql data", sys.exc_info())             
        ret = False  
    finally:
        #c.close     
        pass

    #self.take += time.clock() - got_clock        
      
    return ret
def rmall(self)
Expand source code
def   rmall(self):
    print("removing all")
    try:      
        #c = self.conn.cursor()
        self.c.execute("delete from config")
        rr = self.c.fetchone()
    except:
        print("Cannot delete sql data", sys.exc_info()) 
    finally:
        #c.close   
        pass
    if rr:            
        return rr[1]
    else:
        return None