在python for s60中使用数据库


# Filename: db.py save in your Python dir 
import e32db 

class db: 
def __init__(self, dbpath): 
self.db = e32db.Dbms() 
self.dbv = e32db.Db_view() 
self.reset_counters() 
try: 
self.db.open(unicode(dbpath)) 
except: 
self.db.create(unicode(dbpath)) 
self.db.open(unicode(dbpath)) 

def reset_counters(self): 
self.affected_rows = 0 
self.num_rows = 0 
self.__internal_counter = 0 

def query(self, sql): 
self.reset_counters() 
if sql.lower().startswith('select'): 
self.dbv.prepare(self.db, unicode(sql)) 
self.dbv.first_line() 
self.num_rows = self.dbv.count_line() 
else: 
self.affected_rows = self.db.execute(unicode(sql)) 

def next(self): 
row = {'id': 0} 
if self.num_rows < 1: 
self.reset_counters() 
raise StopIteration 
elif self.__internal_counter < self.num_rows: 
self.dbv.get_line() 
for i in range(self.dbv.col_count()): 
row[i] = self.dbv.col(i+1) 
self.dbv.next_line() 
self.__internal_counter += 1 
return row 
else: 
self.reset_counters() 
raise StopIteration 

def __iter__(self): 
return self 




Now to create and fill db, create a file in the same dir as the db.py with this content:


# Change __exec_path to the path of your python script dir 
__exec_path = "E:\\Python\\" 
dbname = "test" 

import sys 
sys.path.append(__exec_path) 
from db import db 

# This will open E:\\Python\test.db - it will be created first, if not existing 
mydb = db(__exec_path+dbname+'.db') 
mydb.query("create table testing (id counter, name varchar)") 
mydb.query("insert into testing (name) values ('test 1')") 
mydb.query("insert into testing (name) values ('test 2')") 




Now go ahead and have fun:


# Again change __exec_path to the path of your python script dir 
__exec_path = "E:\\Python\\" 
dbname = "test" 

import sys 
sys.path.append(__exec_path) 
from db import db 

# Opens E:\\Python\test.db 
mydb = db(__exec_path+dbname+'.db') 
mydb.query("select * from testing") 
for row in mydb: 
print "-> ",row[0]," ",row[1]," <-" 

你可能感兴趣的:(sql,python,Go)