一、两个重要对象
1.1 数据库连接对象(Connection Object)
数据库连接对象主要提供获取数据库游标对象(Cursor Object)和提交 、回滚事物的方法,以及关闭数据库连接的方法
-
获取连接对象(以PyMySQL为例)
conn = pymysql.connect(host="主机名", user="用户名", password="密码", db="数据库名", charset="字符编码" )
通过connect()函数获取连接对象。该函数有多个参数,具体使用哪些参数,取决于使用的数据库类型以及所使用的Python数据库操作模块
connect()函数常用的参数及说明:
参数 说明 host 主机名 user 数据库用户名 password 数据库连接密码 db 数据库名 charset 指定字符编码 -
连接对象的方法
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 连接步骤
- 使用navicat创建数据库py_conn_test
- 使用PyMySQL连接py_conn_test数据库
- 获取Connection对象
- 使用Connection对象创建Cursor对象
- 使用创建的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() # 提交事务