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程序设计有所帮助。