您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > python 的sqlite3连接模块用法
python在2.5版以后,就自带了sqlite3模块,直接import即可。模块可用后,就可以实现连接sqlite数据库的功能。sqlite3数据库与mysql不同,它每一个库叫做一个文件,连接的时候,库名即文件名,库内的表则操作方法与mysql相同,或许支持的sql语句会有一些差异。我根据连接mysql的操作方法的包装,改写成了这个sqlite数据库连接模块。附件有这个源码。Python代码1.#coding=gbk2.importos,sys,string3.importsqlite34.importtraceback5.6.classSQLObj(object):7.def__init__(self,db='youmoney'):8.self.db_name=db9.self.connected=010.self.cur=None#指针对象11.self.conn=None#连接对象12.self._connect()13.14.def_connect(self):15.try:16.#printconnectto,self.db_name17.self.conn=sqlite3.connect(self.db_name)18.self.cur=self.conn.cursor()19.self.connected=120.except:21.traceback.print_exc()22.self.connected=023.24.@property25.defis_connected(self):26.returnself.connected!=027.28.def_check_alive(self):29.ifnotself.is_connected:30.self._connect()31.ifnotself.is_connected:32.raiseCan'tconnecttosqlite333.34.#直接提取方法35.defquery(self,sql,warning=1):36.self._check_alive()37.try:38.cur=self.conn.cursor()39.cur.execute(sql)40.res=cur.fetchall()41.cur.close()42.except:43.ifwarning:44.traceback.print_exc()45.returnNone46.returnres47.48.49.#特殊的提取方法,形成字典返回50.defdquery(self,sql,warning=1):51.self._check_alive()52.try:53.cur=self.conn.cursor()54.cur.execute(sql)55.56.des=cur.description#获取字段描述57.res=cur.fetchall()#获取字段内容58.ret=[]59.ifdes:60.names=[x[0]forxindes]#从des中提取每个元素(列表)的第一个元素(字符串)61.forlineinres:62.ret.append(dict(zip(names,line)))#dict是形成字典的工厂函数,zip用于多个列表循环(name,line是两个列表)63.else:64.ret=res65.cur.close()66.except:67.ifwarning:68.traceback.print_exc()69.returnNone70.returnret71.72.defexecute(self,sql,warning=1):73.self._check_alive()74.try:75.cur=self.conn.cursor()76.rows=cur.execute(sql)77.self.conn.commit()78.cur.close()79.returnrows80.except:81.ifwarning:82.traceback.print_exc()83.return-184.85.defclose(self):86.ifself.connected==0:87.return88.try:89.self.cur.close()90.self.conn.close()91.self.connected=092.except:93.pass94.95.def__del__(self):96.self.close()97.98.def_lbsql_test_sqlite3():99.db=SQLObj(db=youmoney.db)100.lists=db.dquery(select*fromcapital)101.forlinlists:102.fork,vinl.items():103.print%s:%s%(k,v),104.break105.break106.107.if__name__==__main__:108._lbsql_test_sqlite3()lbsqlite.zip(1KB)下载次数:2本文转载链接:实现连接SQLite数据库的方法这篇文章主要介绍了Python3实现连接SQLite数据库的方法,在Python数据库编程中有着广泛的应用,需要的朋友可以参考下本文实例讲述了Python3实现连接SQLite数据库的方法,对于Python的学习有不错的参考借鉴价值。分享给大家供大家参考之用。具体方法如下:实例代码如下:?1importsqlite32345678910111213141516171819202122db=rD:\pyWork\test.db#pyWork目录下test.db数据库文件drp_tb_sql=droptableifexistsstaffcrt_tb_sql=createtableifnotexistsstaff(idintegerprimarykeyautoincrementuniquenotnull,namevarchar(100),cityvarchar(100));#连接数据库con=sqlite3.connect(db)cur=con.cursor()#创建表staffcur.execute(drp_tb_sql)cur.execute(crt_tb_sql)#插入记录insert_sql=insertintostaff(name,city)values(?,?)#?为占位符cur.execute(insert_sql,('Tom','NewYork'))cur.execute(insert_sql,('Frank','LosAngeles'))cur.execute(insert_sql,('Kate','Chicago'))cur.execute(insert_sql,('Thomas','Houston'))cur.execute(insert_sql,('Sam','Philadelphia'))con.commit()#查询记录23242526272829303132333435363738394041select_sql=select*fromstaffcur.execute(select_sql)#返回一个list,list中的对象类型为tuple(元组)date_set=cur.fetchall()forrowindate_set:print(row)cur.close()con.close()希望本文实例对大家的Python学习有所帮助。本文转载连接:数据库操作类分享这篇文章主要介绍了PythonSQLite3数据库操作类分享,需要的朋友可以参考下接触Python时间也不是很长的,最近有个项目需要分析数据,于是选用Python为编程语言,除了语言特性外主要还是看重Python对于SQLite3数据库良好的支持能力了,因为需要灵活处理大量的中间数据。刚开始一些模块我还乐此不疲的写SQL语句,后来渐渐厌倦了,回想到以前捣鼓C#的时候利用反射初步构建了个SQL查询构造器,直到发现linq,于是放弃了这个计划,当然微软后来又推出了EntityFramework,这些都是后话了,而且现在我对微软的东西兴趣不是很大的,好了,扯多了,下面继续正文。对了,再扯一句,优秀的博客程序Drupal也使用了类似的查询构造器进行数据库查询,避免直接写SQL语句,另外这样做的一点点好处就是,可以一定程度的屏蔽平台相关性,对于数据库迁移还是有帮助的。不过我今天介绍的数据库辅助类查询构造器是个很简单的东东,甚至只限于SQLite数据库,如果有童鞋感兴趣可以完善下,我目前只要操作SQLite顺手就可以了,对于比较大的数据库应用就直接上ORM吧。先看代码:复制代码代码如下:importsqlite3#***************************************************#*#*Description:Python操作SQLite3数据库辅助类(查询构造器)#*Author:wangye#*#***************************************************def_wrap_value(value):returnrepr(value)def_wrap_values(values):returnlist(map(_wrap_value,values))def_wrap_fields(fields):forkey,valueinfields.items():fields[key]=_wrap_value(value)returnfieldsdef_concat_keys(keys):return[+],[.join(keys)+]def_concat_values(values):return,.join(values)def_concat_fields(fields,operator=(None,,)):ifoperator:unit_operator,group_operator=operator#fields=_wrap_fields(fields)compiled=[]forkey,valueinfields.items():compiled.append([+key+])ifunit_operator:compiled.append(unit_operator)compiled.append(value)compiled.append(group_operator)compiled.pop()#poplastgroup_operatorreturn.join(compiled)classDataCondition(object):本类用于操作SQL构造器辅助类的条件语句部分例如:DataCondition((=,AND),id=26)DataCondition((=,AND),True,id=26)def__init__(self,operator=(=,AND),ingroup=True,**kwargs):构造方法参数:operator操作符,分为(表达式操作符,条件运算符)ingroup是否分组,如果分组,将以括号包含kwargs键值元组,包含数据库表的列名以及值注意这里的等于号不等于实际生成SQL语句符号实际符号是由operator[0]控制的例如:DataCondition((=,AND),id=26)(id=26)DataCondition((,OR),id=26,age=35)(id26ORage35)DataCondition((LIKE,OR),False,name=John,comp
本文标题:python 的sqlite3连接模块用法
链接地址:https://www.777doc.com/doc-4209989 .html