数据库 DataBase 就是来存储数据的
SQLite
SQL 结构化查询语言
select insert delete update
数据库编程接口
Python DataBase API 2.0
连接、事务(提交、回滚)、游标
1、SQLite
Python数据库编程接口提供的标准的操作数据库的5个步骤
1、连接数据库
2、拿到游标
3、执行
4、关闭游标
5、关闭数据库的连接
最后一定要关闭
1.1 创建表 create
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "create table user (id int(11) primary key, name varchar(50))"
cursor.execute(sql)
# 关闭游标和连接
cursor.close()
conn.close()
1.2 插入数据 insert
(不可重复插入)
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "insert into user (id, name) values ('1', '张三丰')"
cursor.execute(sql)
# 关闭游标和连接
cursor.close()
conn.commit() # 数据库提交数据
conn.close()
插入多条数据
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "insert into user (id, name) values ('2', '张无忌')"
cursor.execute(sql)
sql = "insert into user (id, name) values ('3', '周芷若')"
cursor.execute(sql)
sql = "insert into user (id, name) values ('4', '赵敏')"
cursor.execute(sql)
# 关闭游标和连接
cursor.close()
conn.commit() # 数据库提交数据
conn.close()
1.3 查询数据 select
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "select * from user"
cursor.execute(sql)
result = cursor.fetchall() # fetchall是全部拿出来的意思
print(result)
# 关闭游标和连接
cursor.close()
conn.close()
为了结果更直观,可以循环遍历输出
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "select * from user"
cursor.execute(sql)
result = cursor.fetchall() # fetchall是全部拿出来的意思
for r in result:
print("我是%d号,我叫%s" % r)
# 关闭游标和连接
cursor.close()
conn.close()
1.4 更新 update
将1号张三丰改成东方不败,并查询
sql = "update user set name='东方不败' where id = 1"
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "update user set name='东方不败' where id = 1"
cursor.execute(sql)
sql = "select * from user"
cursor.execute(sql)
result = cursor.fetchall() # fetchall是全部拿出来的意思
for r in result:
print("我是%d号,我叫%s" % r)
# 关闭游标和连接
cursor.close()
conn.commit()
conn.close()
1.5 删除 delete
删除1号东方不败
sql = "delete from user where id=1"
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "delete from user where id=1"
cursor.execute(sql)
sql = "select * from user"
cursor.execute(sql)
result = cursor.fetchall() # fetchall是全部拿出来的意思
for r in result:
print("我是%d号,我叫%s" % r)
# 关闭游标和连接
cursor.close()
conn.commit()
conn.close()
1.6 考虑异常情况
如果执行sql部分出现异常,则游标和连接都无法关闭
为了解决,需要捕获异常,try Exception来处理,最主要要关闭连接
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 拿到游标
cursor = conn.cursor()
try:
# 执行sql
sql = "update user set name='东方不败' where id = 1"
cursor.execute(sql)
sql = "select * from user"
cursor.execute(sql)
result = cursor.fetchall() # fetchall是全部拿出来的意思
for r in result:
print("我是%d号,我叫%s" % r)
conn.commit() # 数据库提交
except Exception as e:
conn.rollback() # 数据库回滚
finally:
# 关闭游标和连接
cursor.close()
conn.close()
2、mysql
python连接mysql
想要连接mysql数据库,就得找到mysql数据库的编程接口
先在pycharm终端安装pymysql
创建表
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='111', database='testdb') # 本机地址、用户名、密码、数据库
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "create table user (id int(11) primary key, name varchar(50))"
cursor.execute(sql)
# 关闭游标和连接
cursor.close()
conn.close()
插入数据
(和之前的区别就是前两句连接数据库)
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='111', database='testdb') # 本机地址、用户名、密码、数据库
# 拿到游标
cursor = conn.cursor()
# 执行sql
sql = "insert into user (id, name) values ('1', '张三丰')"
cursor.execute(sql)
sql = "insert into user (id, name) values ('2', '张无忌')"
cursor.execute(sql)
sql = "insert into user (id, name) values ('3', '周芷若')"
cursor.execute(sql)
sql = "insert into user (id, name) values ('4', '赵敏')"
cursor.execute(sql)
# 关闭游标和连接
cursor.close()
conn.commit() # 数据库提交数据
conn.close()
查询、更新、删除也是,只有前两行连接数据库发生变化
在真正项目中要用try开始
mysql用来学习的比较好,实际工作过程用的最多的是Oracle
3、Oracle
连接数据库接口模块
先安装,在pycharm终端,输入pip install cx_Oracle
连接Oracle数据库,
# cx_Oracle 和 PyMySql一样是支持Oracle连接API 模块
# 首先要用pip install cx_Oracle来安装
import cx_Oracle as orcl
# 连接方法和参数与PyMySql稍有不同,但是原理都是一样的
conn = orcl.connect('ep2eas/ep2eas@31.23.40.14:1521/CCBDEV') # 用户名/密码 IP地址 端口/数据库名
cursor = conn.cursor()
try:
# 一下代码为查询多条数据的例子
"""
cursor.execute("select * from userinfo") # execute方法返回值不是数据条数了,要注意和MySql的区别
rows = cursor.fetchall()
print("共查询到%d条数据:" % len(rows)) # Oracle获取条数方法与MySql不同
for row in rows:
print(row)
"""
# 查询一条数据
cursor.execute("select * from userinfo where usercode='800406'")
row = cursor.fetchone()
print(row)
except Exception as e:
print("查询出错:", e)
finally:
# 不要忘记关闭游标和数据库连接
cursor.close()
conn.close()