无论你学任何编程语言,数据库都必须要学会,否则你的数据存在哪,总不能用手端着吧?数据库是“按照数据结构来组织、存储和管理数据的仓库”,它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。
中小型企业用得较多的是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的内容讲完了。