《python 的sqlite3连接模块用法》由会员分享,可在线阅读,更多相关《python 的sqlite3连接模块用法(14页珍藏版)》请在金锄头文库上搜索。
1、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. de
2、f_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
3、. 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. raiseCantconnecttosqlite333. 34. #直接提取方法35. defquery(self,sql,warning=1):36. self
4、._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(
5、)54. cur.execute(sql)55. 56. des=cur.description#获取字段描述57. res=cur.fetchall()#获取字段内容58. ret=59. ifdes:60. names=x0forxindes#从des中提取每个元素(列表)的第一个元素(字符串)61. forlineinres:62. ret.append(dict(zip(names,line)#dict是形成字典的工厂函数,zip用于多个列表循环(name,line是两个列表)63. else:64. ret=res65. cur.close()66. except:67. ifwar
6、ning: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. mit()78. cur.close()79. returnrows80. except:81. ifwarning:82. traceback.print_exc()83. return-184. 85. defclose(self)
7、: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
8、():103. print%s:%s%(k,v),104. break105. break106. 107. if_name_=_main_:108. _lbsql_test_sqlite3() lbsqlite.zip(1 KB) 下载次数: 2本文转载链接:http:/ sqlite3db= rD:pyWorktest.db #pyWork目录下test.db数据库文件drp_tb_sql= drop table if exists staffcrt_tb_sql= create table if not exists staff(id integer primary key autoin
9、crement unique not null,name varchar(100),city varchar(100);#连接数据库con= sqlite3.connect(db)cur= con.cursor()#创建表staffcur.execute(drp_tb_sql)cur.execute(crt_tb_sql)#插入记录insert_sql= insert into staff (name,city) values (?,?) #?为占位符cur.execute(insert_sql,(Tom,New York)cur.execute(insert_sql,(Frank,Los Angeles)cur.execute(insert_sql,(Kate,Chicago)cur.execute(insert_sql,(Thomas,Houston)cur.execute(insert_sql,(Sam,Philadelphia)mit()#查询记录select_sql= select * from staffcur.execute(select_sql)#返回一个list,list中的对象类型为tuple(元组)date_set= cur.fetchall()for rowin da