Python2.7编程中SQLite3基本操作方法示例
本文实例讲述了Python2.7中SQLite3基本操作方法。分享给大家供大家参考,具体如下:
1、基本操作
#-*-coding:utf-8-*- #!/usr/bin/envpython importsqlite3 defmykey(x): returnx[3] conn=sqlite3.connect("D:\\demo\\my_db.db") sql="CREATETABLEIFNOTEXISTSmytb(achar,bint,creal,dDATE)" #achar,bint,creal表示该表有三个字段, #a是字符串类型,b是整数类型,c是实数类型。 conn.execute(sql) cs=conn.cursor() #cs.execute("DELETEFROMmytbWHEREA='张三'") cs.execute("DELETEFROMmytb") #删除所有记录 ''''' cs.execute("INSERTINTOmytb(a,b,c,d)values('ZhangSan',25,120,'2014-03-04')") cs.execute("INSERTINTOmytb(a,b,c,d)values('WangWu',24,110,'2014-05-01')") cs.execute("INSERTINTOmytb(a,b,c,d)values('LiSi',23,130,'2014-04-06')") ''' #批量注入,batchdata是一个列表,列表里每一个元素都是一个元组 batchdata=[('ZhangSan',25,120,'2014-03-04'), ('WangWu',24,110,'2014-05-01'), ('LiSi',23,130,'2014-04-06')] cs.executemany('INSERTINTOmytbvalues(?,?,?,?)',batchdata) conn.commit()#将加入的记录保存到磁盘,非常重要! cs.execute("SELECTname,sqlFROMsqlite_masterWHEREtype='table'") recs=cs.fetchall() print(recs) cs.execute("SELECT*FROMmytb")#打开数据表 recs=cs.fetchall()#取出所有记录 print("thereis",len(recs),"notes.") printrecs recs.sort(key=mykey) printrecs cs.close() conn.close()
2、删除一条记录,使用sql字符串变量可以实现带参数的删除
sql="DELETEFROMmy_tableWHEREnumber='"+my_num+"'" cs.execute(sql)
3、查询某一条或多条记录
如果SQLite3查找的数据库记录中含有中文,取出到Python时要对数据进行decode处理。当时我上网查的时候说要用GBK解码,但我自己却解码失败了,换成utf-8解码才成功显示。另外,如果只查询一条可以用fetchone语句,或者fetchall之后再通过python把它找出来。
sql="SELECTnameFROMmy_tableWHEREnumber='"+my_num+"'" cs.execute(sql) the_name=(cs.fetchall())[0][0].decode('utf-8')
4、避免重复注入
有时候我们会有重复的记录,为了避免把相同的记录多次插入到数据库,可以使用如下语句:
sql="INSERTORREPLACEINTO"+my_table+"values(?,?,?,?,?,?,?)" #假设my_table有7项
5、插入中文记录至SQLite3
Python是unicode编码,但数据库对中文是使用GBK编码,比如stock_name变量含有中文,则需要做unicode(name,"gbk")处理
batch=[(stock_num,unicode(stock_name,"gbk"))] cs.executemany("INSERTORREPLACEINTOmy_tablevalues(?,?)",batch)
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python操作SQLite数据库技巧总结》、《Python常见数据库操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。