Python学习之数据库操作

一、两个重要对象

1.1 数据库连接对象(Connection Object)

数据库连接对象主要提供获取数据库游标对象(Cursor Object)和提交 、回滚事物的方法,以及关闭数据库连接的方法

  1. 获取连接对象(以PyMySQL为例)

    conn = pymysql.connect(host="主机名",
                          user="用户名",
                          password="密码",
                          db="数据库名",
                          charset="字符编码"
                          )
    

    通过connect()函数获取连接对象。该函数有多个参数,具体使用哪些参数,取决于使用的数据库类型以及所使用的Python数据库操作模块

    connect()函数常用的参数及说明:

    参数说明
    host主机名
    user数据库用户名
    password数据库连接密码
    db数据库名
    charset指定字符编码
  2. 连接对象的方法

    connect()函数返回连接对象。这个对象表示目前和数据库的会话

    连接对象方法介绍:

    方法名说明
    close()关闭数据库连接
    commit()提交事务
    rollback()回滚事务
    cursor()获取游标对象

1.2 游标对象(Cursor Object)

游标对象代表数据库中的游标,用于指示抓取数据操作的上下文。主要提供执行SQL语句、调用存储过程、获取查询结果等方法

游标对象的方法介绍:

方法名说明
callproc(procname[, parameters])调用存储过程
close()关闭当前游标对象
execute(sql[, parameters])执行SQL语句并返回结果
executemany(sql[, parameters])用于批量执行的SQL语句
fetchone()获取查询结果集中的下一条记录
fetchmany(size)获取指定数量的记录
fetchall()获取结果集中的全部记录
nextset()跳至下一个可用的结果集
arraysize指定使用fetchmany()获取的行数,默认为1
setinputsizes(sizes)设置在调用execute()方法时分配的内存区域大小
setoutputsizes(sizes)设置列缓冲区大小,对大数据列如LONGS和BLOBS有用

二、MySQL数据库连接示例

2.1 连接步骤

  1. 使用navicat创建数据库py_conn_test
  2. 使用PyMySQL连接py_conn_test数据库
  3. 获取Connection对象
  4. 使用Connection对象创建Cursor对象
  5. 使用创建的Cursor对象创建表并读写数据

2.2 具体代码实现

import pymysql

# 获取Connection对象
with pymysql.connect(host="localhost",  # 使用with管理上下文
                     user="root",
                     password="root",
                     db="py_conn_test") as db:
    # 获取Cursor对象
    with db.cursor() as cursor:
        try:
            # 创建数据库
            cursor.execute("DROP TABLE IF EXISTS users")
            ddl = """
            CREATE TABLE users (
                ID BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
                UNAME VARCHAR(30) NOT NULL,
                UPSWD VARCHAR(30) NOT NULL
            ) AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
            """
            cursor.execute(ddl)
            # 向数据库中添加数据
            data = [('xukai', '123456'), ('jack', '123123'), ('sam', '1234')]
            cursor.executemany("INSERT INTO users(UNAME, UPSWD) VALUES (%s, %s)", data)
            # 查询数据
            cursor.execute("SELECT * FROM users")
            result = cursor.fetchall()
            for i in result:
                print(i)
        except Exception as e:
            db.rollback()  # 回滚事务
            print("错误原因:", e)
        else:
            db.commit()  # 提交事务
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值