sqlite-manager
Verfasst: Samstag 10. Juni 2006, 11:18
hi!
hier ein kleines probgramm. ich habe mein bestes gegeben, alles objektorientiert zu machen. ich weiß, dass da an einigen stellen bessere varianten gewesen wären, aber das ist immerhin mein erster 'großer' skript.
an machen stellen hätte man vielleicht keine klassen nehmen müssen oder sogar auf funktionen verzichten können (zb wird man ja sowieso nur einmal begrüßt^^), aber das war dafür da mich am OOP auszutoben.
Ab Python 2.5 wird der da oben ja ziemlich nutzlos sein, aber irgendowdran muss man ja lernen und die zähne sich ausbeißen^^
hier ein kleines probgramm. ich habe mein bestes gegeben, alles objektorientiert zu machen. ich weiß, dass da an einigen stellen bessere varianten gewesen wären, aber das ist immerhin mein erster 'großer' skript.
Code: Alles auswählen
#!/usr/bin/env python
#!/usr/bin/env python
import sys
###setup
class Setup:
def __init__(self):
self.usersetupfile = open('usersettings.txt','w')
self.i = 0
def setup(self):
for module in ["apsw","sqlite"]:
try:
exec("import %s as sqlite_module") % module
self.usersetupfile.write(module)
self.i+=1
if self.i == 1:
break
except:
pass
if self.i == 0:
print "Setup Failed"
else:
print "Succesfully Done!"
self.usersetupfile.close()
self.usersetupfile = open('usersettings.txt','a')
useroutput = raw_input("Where should i print? (W)idget or (C)ommandline?")
if useroutput == "W":
tell("i am sorry but i wasnt able to choose the right one yet!")
#self.usersetupfile.write("|"+"widget")
elif useroutput == "C":
self.usersetupfile.write("|"+"cmd")
###settings
class UserSettings:
def get_things(self):
self.usersettingfile = open('usersettings.txt','r').read()
self.usersettings = self.usersettingfile.split("|")
return self.usersettings
def get_module(self):
self.getter = UserSettings()
self.module = self.getter.get_things()[0]
return self.module
def set_module(self):
self.setter = Setup()
return self.setter.setup()
def get_output(self):
self.output_getter = UserSettings()
self.output = self.output_getter.get_things()[1]
return self.output
def set_output(self):
setter = Setup()
return setter.setup()
###useful things^^
def import_modules():
global sqlite_module
getter = UserSettings()
module = getter.get_module()
sqlite_module = __import__(module)
tell('using module '+module)
def tell(something):
getoutput = UserSettings()
output = getoutput.get_output()
if output == "cmd":
print something
if output == "widget":
printer = gui_manager
printer.output(something)
def starter():
if len(sys.argv)==2:
if sys.argv[1]=="--setup":
usersetter = UserSettings()
usersetter.set_module()
elif len(sys.argv) == 3:
import_modules()
conn = sqlite_module.connect(sys.argv[1])
cur = conn.cursor()
cur.execute(sys.argv[2])
cur.close()
conn.close()
elif len(sys.argv)>3:
print "Arglen not supported"
raise SystemError
else:
usergetter = UserSettings()
module = usergetter.get_module()
executer = Main()
executer.greeting()
executer.cmdgetter()
def connecter():
import_modules()
global conn
global cur
conn_var = raw_input("Please enter the Path to the SQLite-Database: \n")
conn = sqlite_module.connect(conn_var)
cur = conn.cursor()
class Main:
def greeting(self):
connecter()
def cmdgetter(self):
self.cmd = raw_input("&&&")
if self.cmd == ".help":
tell("Enter the SQL-Code here!\nTo exit this, type '.exit'")
self.looper = Main()
self.looper.cmdgetter()
if self.cmd == ".exit":
self.conn.close()
tell("DB was closed, cya!")
raise SystemError
cur.execute(self.cmd)
self.firstcommand = self.cmd.split(' ')[0]
try :
if self.firstcommand == 'select' or self.firstcommand == 'SELECT' or self.firstcommand == 'Select':
tell(cur.fetchall())
else:
cur.commit()
tell("Things were commited!")
except:
tell("An Error has accured")
self.looper = Main()
self.looper.cmdgetter()
if __name__ == '__main__':
starter()
Ab Python 2.5 wird der da oben ja ziemlich nutzlos sein, aber irgendowdran muss man ja lernen und die zähne sich ausbeißen^^