python和sqlite

来源:互联网 发布:php自动刷新网页代码 编辑:程序博客网 时间:2024/06/03 14:23

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 sqlite3conn = 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 sqlite3conn = 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语言,童鞋们可以自己先学一下,蜗牛也去复习一下这个很不好记的语言。另外,数据库真的是门很高深的学问。

0 0