中小型企业用得较多的是Sql Server和MySql数据库,大型企业用得较多的是Oracle数据库。在平时开发单机软件时,大多数人会选择用SQLite数据库。 SQLite是一个无服务器、零配置的SQL 数据库引擎,是在世界上最广泛部署的 SQL 数据库引擎它的源代码不受版权限制。智能手机(Android或iPhone)本地内置支持的数据库就是SQLite。Python内置就提供了对SQLite3数据库操作的支持,在代码中直接导入即可使用。
无论你学任何编程语言,数据库都必须要学会,否则你的数据存在哪,总不能用手端着吧?数据库是“按照数据结构来组织、存储和管理数据的仓库”,它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。
中小型企业用得较多的是Sql Server和MySql数据库,大型企业用得较多的是Oracle数据库。在平时开发单机软件时,大多数人会选择用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()
输出结果(sales.db文件内容)
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条记录被删除了)
......