SQLite中如何从Cursor中取出一个对象。
我按照主键查询出来的数据放在了一个Cursor中,现在我想把这条记录去出来,可是我还是很是不懂,总是提示错误,求哪位高手给我点提示-- 谢谢
追问:给个QQ,交流一下吧
我按照主键查询出来的数据放在了一个Cursor中,现在我想把这条记录去出来,可是我还是很是不懂,总是提示错误,求哪位高手给我点提示-- 谢谢
追问:给个QQ,交流一下吧
答案:在使用query的时候,可以设置取得的条件,不知道你基于什么语言的,可以讨论讨论
其他:我要存入一个状态到数据库里,但是发现Cursor类没有getBoolean这样的方法,要 直接使用long型 0 1 来区分好了 # encoding: utf-8
import sqlite3
class LiteDBI:
''' SQLite3驱动的公共数据库接口类 '''
def __init__(self, database=':memory:'):
self.conn = sqlite3.connect(database)
def close(self):
self.conn.close()
def query(self, sql, *args, **kwg):
asdict = dict(kwg).get('asdict')
curr = self.conn.cursor()
curr.execute(sql, args)
fields = [f[0] for f in curr.descriptions]
for r in curr:
yield dict(map(None, fields, r)) if asdict else r
curr.close()
假设在项目公共定义模块中定义的各种类如下
# encoding: utf-8
# 从数据库接口类中导入LiteDBI接口
from dbi import LiteDBI
class ClassRoom(object):
def __init__(self, **kwg):
self.__dict__ = dict(kwg)
def __str__(self):
return 'Class Room: %s'%self.__dict__
...
class ClassRoomMgr(object):
def __init__(self, dbi):
self.dbi = dbi
self.cached = {}
self.sql = 'select * from classroom where classroomid = ?'
def __getitem__(self, k):
if k in not self.cached:
for r in self.dbi.query(self.sql, k, asdict=True):
self.cached[r['id']] = ClassRoom(**r)
return self.cached[k]
...
# encoding: utf-8
# 从项目公共定义模块中导入各种类
from projcommon.cls import *
def tester():
dbi = LiteDBI('storage.db')
classroommgr = ClassRoomMgr(dbi)
print(classroommgr[102])
dbi.close()
if __name__ == '__main__':
test()
上一个:sql语句能够列出一个表所有列的列名么? sqlite能够列出一个表所有列的列名么?
下一个:sqlite 3.x 是什么