09.数据库操作

无论你学任何编程语言,数据库都必须要学会,否则你的数据存在哪,总不能用手端着吧?数据库是“按照数据结构来组织、存储和管理数据的仓库”,它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。
中小型企业用得较多的是Sql Server和MySql数据库,大型企业用得较多的是Oracle数据库。在平时开发单机软件时,大多数人会选择用SQLite数据库。

9.1 SQLite

SQLite是一个无服务器、零配置的SQL 数据库引擎,是在世界上最广泛部署的 SQL 数据库引擎它的源代码不受版权限制。智能手机(Android或iPhone)本地内置支持的数据库就是SQLite。Python内置就提供了对SQLite3数据库操作的支持,在代码中直接导入即可使用。
1.创建数据库和表
引入sqlite开发包,用connect打开(不存在就创建)数据库文件,创建游标cursor,执行Sql语句。

import sqlite3

# 创建一个数据库
conn = sqlite3.connect("sales.db")
# 创建游标
cursor = conn.cursor()
# 执行语句创建表的语句
createTable = "Create Table Customer(id int, name text, address text)"
cursor.execute(createTable)
# 关闭数据库的链接
cursor.close()

2.插入数据
可单条或批量插入数据。记得加上conn.commit()进行命令提交。

import sqlite3

# 创建一个数据库
conn = sqlite3.connect("sales.db")
# 创建游标
cursor = conn.cursor()
# 添加单条数据
data = "1,'高科技企业','青藏高原1号1路222'"
cursor.execute('INSERT INTO Customer VALUES (%s)' % data)
# 添加单条数据
cursor.execute("INSERT INTO Customer values(?,?,?)",
(2, "高高在上科技", "黄土高坡3号3单元"))
# 添加多条数据
cursor.executemany('INSERT INTO Customer VALUES (?,?,?)',
[(3, "牛逼公司", "在最牛的9栋9单元上"),
(4, "真的好科技无限公司", "在一个无人知道的地方")])
conn.commit()
# 关闭数据库的链接
cursor.close()
conn.close()

3.修改数据
修改单行数据时,用id指定。修改全部时,可去掉where语句。

import sqlite3

# 创建一个数据库
conn = sqlite3.connect("sales.db")
# 创建游标
cursor = conn.cursor()
# 方式一
cursor.execute("UPDATE Customer SET name=? WHERE id=?", ("吹牛皮企业", 1))
# 方式二
cursor.execute("UPDATE Customer SET name='这里有家皮包公司' WHERE id=2")
conn.commit()
# 关闭数据库的链接
cursor.close()
conn.close()

输出结果(第1和第2条记录的客户名称name被修改了)
4.删除数据
用where指定删除行的id,如果不指定,将删除全部,这个要注意。

import sqlite3

# 创建一个数据库
conn = sqlite3.connect("sales.db")
# 创建游标
cursor = conn.cursor()
# 方式一
cursor.execute("DELETE FROM Customer WHERE id=?", (1,))
# 方式二
cursor.execute("DELETE FROM Customer WHERE id=2")
conn.commit()
# 关闭数据库的链接
cursor.close()
conn.close()

输出结果(第1和第2条记录被删除了)
5.数据查询
可查询全部数据,可查询第1条,可查询前几条,也可用where条件限制查询的内容。

import sqlite3

# 创建一个数据库
conn = sqlite3.connect("sales.db")
# 创建游标
cursor = conn.cursor()
# 查询所有数据
cursor.execute("select * from Customer")
print(cursor.fetchall())
# 查询第1条数据
cursor.execute("select * from Customer")
print(cursor.fetchone())
# 查询多条数据
print(cursor.fetchmany(2))
# 关闭数据库的链接
cursor.close()
conn.close()

输出结果

[(3, '牛逼公司', '在最牛的9栋9单元上'), (4, '真的好科技无限公司', '在一个无人知道的地方')]
(3, '牛逼公司', '在最牛的9栋9单元上')
[(4, '真的好科技无限公司', '在一个无人知道的地方')]

好了,有关Python操作SQLite的内容讲完了。