pymysql 是 Python 中用于连接 MySQL 数据库并执行操作的库。
一、操作流程
- 连接数据库。需要获取数据库的相关配置信息
db_info = {
'host':'127.0.0.1', # 数据库的IP地址
'port':3306, # 端口号
'user':'root', # 数据库的连接账户
'password':'123456', # 账户对应的密码
'database':'world'
}
- 通过配置信息来实现对数据库的连接操作
conn = pymysql.connect(**db_info)
- 创建游标,用于获取sql的执行记录, 创建一个游标,并指定返回结果为字典类型
# 第一种方式
# 创建游标
cursor = conn.cursor()
# 第二种方式:并指定返回结果为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
- 数据库的相关操作,即编写sql语言
sql = 'select * from city'
sql = 'select * from city where CountryCode="AFG"'
增删改: 其实就是对数据库已有的数据进行修改的特性,在实操中都是需要进行二次确认的 conn.commit():
是对事务进行确认提交的操作,可以让修改生效,一般会放在最后面 conn.rollback(): 回滚操作,撤回之前的修改操作
- 调用sql执行
cursor.execute(sql)
- 获取执行结果
获取本次sql执行的所有结果
result = curses.fetchall()
for i in result:
print(i)
只获取一条结果
result = curses.fetchone()
print(result)
指定获取数据记录条数
result = curses.fetchmany(3)
print(result)
ses.fetchone()
print(result)
基于第一行向前前移
curses.scroll(2,'absolute')
result = curses.fetchone()
print(result)
- 数据库关闭操作。包括游标的关闭以及数据库本身的连接关闭
curses.close()
conn.close()
完整代码演示:
import pymysql
# 创建配置信息
db_info = {
'host':"127.0.0.1",
'port':3306,
'user':'root',
'password':'123456',
'database':'school'
}
# 连接数据库
conn = pymysql.connect(**db_info)
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 定义sql语句
sql = 'select * from student'
# 调用sql语句
cursor.execute(sql)
# 输出sql执行的全部结果
result = cursor.fetchall()
for i in result:
print(i)
# 获取单条结果
result1 = cursor.fetchone()
print(result1)
# 获取指定多少条的记录
result2 = cursor.fetchmany(3) # 列表的形式输出
print(result2)
# 数据库关闭
cursor.close()
conn.close()
二、操作两个数据库表
- 获取 table1 内容
# 对 表1 进行操作
sql1 = 'select * from student'
# 调用sql语句
cursor.execute(sql1)
# 获取结果
result1 = cursor.fetchall()
for row in result1:
print(row)
- 获取 table2 内容
# 获取 表2 进行操作
sql2 = 'select * from subject'
# 调用sql语句
cursor.execute(sql2)
# 获取结果
result2 = cursor.fetchall()
for row in result2:
print(row)
其实就是对数据库已有的数据进行修改的特性,在实操中都是需要进行二次确认的
注意:
conn.commit():是对事务进行确认提交的操作,可以让修改生效,一般会放在最后面
增
insert_sql1 = 'insert into student values (1013,123456,"张三",1,4,"13700001111","广东广州","1990-01-01 00:00:00","[email protected]","123456196001011243")'
cursor.execute(insert_sql1)
conn.commit()
改
update_sql1 = "update student set gradeid=5 where studentno=1013"
cursor.execute(update_sql1)
conn.commit()
删
del_sql1 = 'delete from student where studentno=1013 '
cursor.execute(del_sql1)
conn.commit()
连接两个数据库
inner_sql = "select * from student inner join subject on student.gradeid=subject.gradeid"
cursor.execute(inner_sql)
conn.commit()
result = cursor.fetchall()
for row in result:
print(row)
三、通过配置信息来操作
1、编写conf.ini
[TESTS_ENV]
HOST = 127.0.0.1 # 地址
PORT = 3306 # 端口号
USER = root # 用户账户
PASSWORD = 123 # 账户密码
DATABASE = school # 数据库名称
2、编写conf.py
import configparser
import pathlib
def sql_conf(env):
conf = configparser.ConfigParser() # 创建一个 ConfigParser 对象,并将其赋值给变量 conf
# pathlib.Path(__file__).parents.resolve() 获取的是当前脚本文件自身的绝对路径。
# parents[0] 获取该路径的父目录
file = pathlib.Path(__file__).parents[0].resolve() / 'mysql_conf.ini'
conf.read(file)
values = dict(conf.items(env))
# 因为读取配置文件获取的内容都是str类型,而port需要int类型。所以需要提前做数据的转型
for key in values.keys():
if key == 'port':
values[key] = int(values[key]) # 将原有值转为int类型
return values
3、编写sql.py
import pymysql
from sql数据库.read_conf import sql_conf
# 基于配置信息
print(sql_conf('TESTS_ENV'))
# 基于配置信息来实现对数据库的连接操作
conn = pymysql.connect(**sql_conf('TESTS_ENV'))
# 创建游标:用于获取sql的执行结果记录
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 将数据结果以dict类型来进行返回
sql = 'select * from student'
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
print(row)
标签:数据库,MySQL,pymysql,cursor,result,sql,print,conn
From: https://blog.csdn.net/weixin_55031982/article/details/140610328