Python数据库操作

这篇博客介绍了Python中对SQLite、MySQL和Oracle数据库的操作,包括创建表、插入数据、查询、更新和删除等基本操作。文章详细阐述了使用Python的DB-API 2.0进行数据库连接、事务处理和异常处理的方法。特别强调了在每个操作完成后关闭数据库连接的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库 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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值