python和sqlite
今天我们来说一说python和sqlite的那些事儿。
说起sqlite蜗牛还是很熟悉的,毕竟蜗牛大学之中做过的为数不多的几个项中基本上都用到了sqlite。
首先,sqlite很小,小到基本连一首歌的空间的没有。主要用于嵌入式平台,在安卓手机里面用的尤其常见。
小呢,就丧失了很多的功能,比如不可能用sqlite存储庞大的数据,你也不可能对它进行很并发的读取。
怎么看,如果单纯的就是为一个小的应用创建数据库,那sqlite是很合适的。当初蜗牛做了一个智能家居,每十秒七个数据量,数据量之间关系简单,用着十分简答。
只要安装了python2.6以上的版本,sqlite应该就是自带的。蜗牛用的是windows10,另外在树莓派的系统(一种简单的linux)上面也可以很方便的永。如果没有,那就easy_install或者pip都很简单。
另外:此片笔记有借鉴廖雪峰博客内容,在此鸣谢。
最后交代一下环境,蜗牛用的是notepad编辑python的。
创建数据库
创建数据库首先要明白,数据库存放表,而表里面有数据。表之间可以有复杂的关系。
连接分三步:
连接到数据库,一个数据库连接称为Connection。
连接到数据库后,需要打开游标,称之为Cursor。
- 通过Cursor执行SQL语句,然后,获得执行结果。
举个不恰当的栗子,你把数据库创建或是打开,都是搬到了锅里。而Cursor就是你操作数据库的炊具,比如铲子……
举个栗子:
import sqlite3
conn = sqlite3.connect('woniu.db')
cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()
首先要引入sqlite3模块。
利用connect连接数据库,如果没有的话会自动创建。
创建在哪里呢?这取决于你用的哪个编译器。
如果用的notepad,那当前编辑的这个.py文件在哪里,这个数据库就在哪里。
如果是交互式环境,那在你安装python的环境下找找,蜗牛的是C:\Python27。
获取了游标cursor之后,调用函数execute()执行sql语句。
execute()里面放一个string参数,这个string是一个完整的sql语句。
create table user (id varchar(20) primary key, name varchar(20))
create table user是创建user表,这个表里面有id和name两个属性(列,column),其中id是varchar(20)类型的(一种在数据库中常用的数据类型,可变字符。),并且是primary key(主键),name属性是varchar(20)。
这样一张表就建立好了。
一定要注意
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()
这三行是很重要的。如果没有这三行,很可能造成资源泄露,并且刚才的操作也很可能没有成功,比如像下面的,没有关闭游标和数据库,那你的insert操作很可能是没有成功。
当然利用命令行去查看数据库里面的内容完全可以,如果你看不下去那种小黑窗,给你一个可视化的工具:sqlite developer。
这个的用法简直傻瓜式,蜗牛也不细讲,自己点吧点吧就会了。
窗口:
可以看到我们刚才定义的表和其中的描述。
我们往数据库插入数据:
import sqlite3
conn = sqlite3.connect('woniu.db')
cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
cursor.execute('insert into user (id, name) values (\'1\', \'Simon\')')
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()
注意其中的sql语句,后边values中的值要用 \’……\’ 转义。
上图:注意点击后面的数据就能看到插入的数据。
关于sql语言,童鞋们可以自己先学一下,蜗牛也去复习一下这个很不好记的语言。另外,数据库真的是门很高深的学问。