首页 > 代码库 > python sqlite(1)
python sqlite(1)
#!/usr/bin/env python# coding=utf-8import sqlite3conn = sqlite3.connect(":memory:")c = conn.cursor()c.execute( ‘‘‘CREATE TABLE stocks(data text,trans text,symbol test,qty real,price real)‘‘‘)c.execute("INSERT INTO stocks VALUES(‘2006-01-05‘,‘BUY‘,‘RHAT‘,100,35.14)")conn.commit()symbol = ‘RHAT‘c.execute("SELECT * FROM stocks WHERE symbol=‘%s‘" % symbol)print c.fetchone()parament = [ (‘2014-11-11‘, ‘WCS‘, ‘RHAT‘, 200, 20.5), (‘2014-11-15‘, ‘wcs‘, ‘RHAT‘, 300, 30.0)]# for t in parament:# c.execute("INSERT INTO stocks VALUES(?,?,?,?,?)", t)c.executemany("INSERT INTO stocks VALUES(?,?,?,?,?)", parament)c.execute("SELECT * FROM stocks WHERE symbol=‘%s‘" % symbol)print c.fetchall(
python是一个轻量级的开发数据库,相比较sql server和roacle而言它显得更加的简单和直观,如oracle庞大的安装文件sqlite就显得轻巧很多,就拿python来说当安装python的时候会自动安装sqlite,用户只要通过import 将其加载入项目就可以直接使用。
在调用sqlite时需要先通过import加载sqlite3,当加载完毕后可以直接通过调用其方法来对数据库进行相应的操作
sqlite有两种加载方式:
1内存形式
这种类型下的所有数据全部存放在内存当中,相当于用户在运行相应程序的时候会在内存中创建一块专属的区域,当项目运行结束后会自动清空其所在区域内的所有的数据,相对文件而言存取速度更快。
在调用.connect()方法只要将":memory:"做为形参调用就可以创建一个内存数据库
2、文件形式
.connect("文件名"),当系统已有相应的名称的数据库时会自动加载,当没有这个数据库的时候会自动创建。
如果需要执行相应的数据操作时,需要调用其.execute()这个方法
1、建表操作
c.execute(
‘‘‘CREATE TABLE stocks(data text,trans text,symbol test,qty real,price real)‘‘‘)
上面的语句是执行一条创建表的SQL语句,表名为stocks
2、插入操作
2.1:通过元组来实现多个数据同时插入
parament = [ (‘2014-11-11‘, ‘WCS‘, ‘RHAT‘, 200, 20.5), (‘2014-11-15‘, ‘wcs‘, ‘RHAT‘, 300, 30.0)]for t in parament: c.execute("INSERT INTO stocks VALUES(?,?,?,?,?)", t)c.execute("SELECT * FROM stocks WHERE symbol=‘%s‘" % symbol)print c.fetchall()
(u‘2006-01-05‘, u‘BUY‘, u‘RHAT‘, 100.0, 35.14)
[(u‘2006-01-05‘, u‘BUY‘, u‘RHAT‘, 100.0, 35.14), (u‘2014-11-11‘, u‘WCS‘, u‘RHAT‘, 200.0, 20.5), (u‘2014-11-15‘, u‘wcs‘, u‘RHAT‘, 300.0, 30.0)]
第一条是初始状态,第二条插入以后的查询
2.2通过executemany来进行多条语句的插入
parament = [ (‘2014-11-11‘, ‘WCS‘, ‘RHAT‘, 200, 20.5), (‘2014-11-15‘, ‘wcs‘, ‘RHAT‘, 300, 30.0)]
c.executemany("INSERT INTO stocks VALUES(?,?,?,?,?)", parament)
c.execute("SELECT * FROM stocks WHERE symbol=‘%s‘" % symbol)
print c.fetchall(
结果与2.1相同
python sqlite(1)