首页 > 数据库 >pymysql操作MySQL数据库(一)

pymysql操作MySQL数据库(一)

时间:2024-07-25 21:26:10浏览次数:10  
标签:数据库 MySQL pymysql cursor result sql print conn

pymysql 是 Python 中用于连接 MySQL 数据库并执行操作的库。

一、操作流程

  1. 连接数据库。需要获取数据库的相关配置信息
db_info = {
    'host':'127.0.0.1', # 数据库的IP地址
    'port':3306, # 端口号
    'user':'root', # 数据库的连接账户
    'password':'123456', # 账户对应的密码
    'database':'world'
}
  1. 通过配置信息来实现对数据库的连接操作
conn = pymysql.connect(**db_info)
  1. 创建游标,用于获取sql的执行记录, 创建一个游标,并指定返回结果为字典类型
# 第一种方式
# 创建游标
cursor = conn.cursor()

# 第二种方式:并指定返回结果为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
  1. 数据库的相关操作,即编写sql语言
sql = 'select * from city'
sql = 'select * from city where CountryCode="AFG"'

增删改: 其实就是对数据库已有的数据进行修改的特性,在实操中都是需要进行二次确认的 conn.commit():
是对事务进行确认提交的操作,可以让修改生效,一般会放在最后面 conn.rollback(): 回滚操作,撤回之前的修改操作

  1. 调用sql执行
cursor.execute(sql)
  1. 获取执行结果
获取本次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)
  1. 数据库关闭操作。包括游标的关闭以及数据库本身的连接关闭
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()

二、操作两个数据库表

  1. 获取 table1 内容
# 对 表1 进行操作
sql1 = 'select * from student'
# 调用sql语句
cursor.execute(sql1)
# 获取结果
result1 = cursor.fetchall()
for row in result1:
    print(row)
  1. 获取 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

相关文章

  • MySQL基础练习20题,看看你的sql基础man不man
    数据获取表的数据信息(sql文件)放在这个链接里了,提取码:52xz,需要的自行提取。数据来自网上的练习,已经给小伙伴们总结好了。https://pan.baidu.com/s/11YMWaXtZb9K60cpOuYTwag将数据导入到mysql中大家可以直接在navicat运行该脚本,就可以直接导入数据了,如果遇到问题很可能是编码......
  • 基于javaweb+mysql数据库实现的宠物领养|流浪猫狗网站
    《基于javaweb+mysql数据库实现的宠物领养网站》该项目含有源码、文档等资料、配套开发软件、软件安装教程、项目发布教程等使用技术:前端使用技术:JSP,HTML5,CSS3、JavaScript等后台使用技术:Servlet、Jdbc等数据库:Mysql数据库项目功能介绍:本系统为基于jsp+mysql的宠物领养......
  • 数据库(MySQL)-DQL数据查询语言
        DQL(DataQueryLanguage数据查询语言)的用途是查询数据库数据,如select语句。其中,可以根据表的结构和关系分为单表查询和多表联查。单表查询    单表查询:针对数据库中的一张数据表进行查询全字段查询    语法:select字段名from表名#推荐s......
  • 腾讯云 Debian12 安装MySQL8亲测可用
    今天刚好需要部署一台服务器,网上查了资料,折腾很久,还是很多问题,现在把我的安装过程以及遇到问题的解决方案记录下来,供大家借鉴!1、更新系统sudoaptupdate2、下载软件包wgethttps://repo.mysql.com/apt/debian/pool/mysql-apt-config/m/mysql-apt-config/mysql-apt-con......
  • 基于CNN卷积神经网络的步态识别matlab仿真,数据库采用CASIA库
    1.算法运行效果图预览(完整程序运行后无水印) 1.训练过程   2.样本库     3.提取的步态能量图   4.步态识别结果和样本真实标签   2.算法运行软件版本MATLAB2022a 3.部分核心程序(完整版代码包含详细中文注释,训练CASIA库) digitD......
  • mysql查询今天、昨天、本周、本月、上一月 、今年数据
    原文链接:https://www.cnblogs.com/cnsdhzzl/p/12724580.html--今天select*from表名whereto_days(时间字段名)=to_days(now());--昨天SELECT*FROM表名WHERETO_DAYS(NOW())-TO_DAYS(时间字段名)<=1--本周SELECT*FROM表名WHEREYEARWEEK(date_format......
  • 一文读懂MySQL数据表索引的类型、创建方法、维护要点
    引言索引是数据库中用于提高查询效率的重要机制。在数据库系统中,索引类似于书籍的目录,它可以帮助数据库系统快速地找到特定数据的位置,从而加快查询速度。通过合理地创建和管理索引,可以显著提升数据库的性能,提高数据检索的效率,降低系统的资源消耗。本文将详细介绍MySQL数据......
  • MySQL空闲会话超时之interactive_timeout 与wait_timeout
    背景描述在用MySQLClient链接MySQLServer进行操作的是偶,如果一段时间没有操作,可能会遇到以下错误:ERROR2006(HY000):MySQLserverhasgoneawayNoconnection.Tryingtoreconnect...或者ERROR2013(HY000):LostconnectiontoMySQLserverduringquery这个报错......
  • 最新nacos下载安装,版本号2.4.0,nacos持久化存储到本地mysql中,nacos配置登录账户密码
    官网:https://nacos.io/zh-cn/docs/quickstart/quick-start1.下载地址:https://github.com/alibaba/nacos/releases网络不好,很难下载。直接使用git克隆,然后自己编译,这是最快的了。克隆:gitclonehttps://github.com/alibaba/nacos.git然后到根目录中(我的:E:\Demos\nacos),执行cmd命令:mv......
  • 虚拟机环境下Rocky 9.4安装Mysql8并配置Dbeaver客户端
    环境:服务器操作系统:Rocky9.4数据库:mysql8.0.38客户端操作系统:windows10Dbeaver版本:24.1.3Rocky9.4安装镜像下载地址:https://mirrors.aliyun.com/rockylinux/9.4/isos/x86_64/Rocky-9.4-x86_64-dvd.isoDbeaver安装文件下载链接:https://dbeaver.io/files/dbeaver-c......