【Python基础】MySQL

news2024/11/28 18:56:01

文章目录

    • @[toc]
      • 创建数据库
      • 创建数据表
      • 数据插入
      • 数据查询
      • 数据更新

因上努力

个人主页:丷从心·

系列专栏:Python基础

学习指南:Python学习指南

果上随缘


创建数据库

import pymysql


def create_database():
    db = pymysql.connect(host='localhost', user='root', password='root')
    cursor = db.cursor()

    sql = """
        create database if not exists python_basics charset=utf8;
    """

    try:
        cursor.execute(sql)
    except Exception as e:
        print(f'数据库创建失败: {e}')
    else:
        print('数据库创建成功...')


if __name__ == '__main__':
    create_database()
  • pymysql.connect(host='localhost', user='root', password='root')用于连接数据库
    • host用于指定数据库IP地址,localhost表示本地
    • user用于指定数据库用户名
    • password用于指定数据库密码
  • db.cursor()返回一个游标对象,用于执行数据库操作
  • cursor.execute(sql)用于执行一条SQL语句

创建数据表

import pymysql


def create_table():
    db = pymysql.connect(host='localhost', user='root', password='root', db='python_basics')
    cursor = db.cursor()

    sql = """
        create table if not exists book_info
        (
            id int primary key auto_increment,
            name varchar(10) not null,
            pub_date datetime,
            read_count int,
            comment_count int,
            is_delete bit
        );
    """

    try:
        cursor.execute(sql)

        print('数据表创建成功...')
    except Exception as e:
        print(f'数据表创建失败: {e}')
    finally:
        cursor.close()
        db.close()


if __name__ == '__main__':
    create_table()

数据插入

import pymysql


def insert_data():
    with pymysql.connect(host='localhost', user='root', password='root', db='python_basics') as db:
        cursor = db.cursor()

        sql = """
            insert into book_info (id, name, pub_date, read_count, comment_count, is_delete) values (%s, %s, %s, %s, %s, %s);
        """

        try:
            cursor.executemany(sql, [(0, '射雕英雄传', '1980-5-1', 12, 34, 0),
                                     (0, '天龙八部', '1986-7-24', 36, 40, 0),
                                     (0, '笑傲江湖', '1995-12-24', 20, 80, 0),
                                     (0, '雪山飞狐', '1987-11-11', 58, 24, 0)])
            db.commit()

            print('数据插入成功...')
        except Exception as e:
            print(f'数据插入失败: {e}')

            db.rollback()


if __name__ == '__main__':
    insert_data()
  • db.commit()用于事务提交
  • db.rollback()用于在数据插入失败时进行事务回滚

数据查询

import pymysql


def query_data():
    db = pymysql.connect(host='localhost', user='root', password='root', db='python_basics')
    cursor = db.cursor()

    sql = """
        select * from book_info;
    """

    try:
        cursor.execute(sql)
        result = cursor.fetchall()
        # result = cursor.fetchone()
        # result = cursor.fetchmany(4)

        for book in result:
            book_info = dict()

            book_info['id'] = book[0]
            book_info['name'] = book[1]
            book_info['pub_date'] = book[2]
            book_info['read_count'] = book[3]
            book_info['comment_count'] = book[4]
            book_info['is_delete'] = book[5]

            print(book_info)
    except Exception as e:
        print(f'查询失败: {e}')
    finally:
        cursor.close()
        db.close()


if __name__ == '__main__':
    query_data()
{'id': 1, 'name': '射雕英雄传', 'pub_date': datetime.datetime(1980, 5, 1, 0, 0), 'read_count': 12, 'comment_count': 34, 'is_delete': b'\x00'}
{'id': 2, 'name': '天龙八部', 'pub_date': datetime.datetime(1986, 7, 24, 0, 0), 'read_count': 36, 'comment_count': 40, 'is_delete': b'\x00'}
{'id': 3, 'name': '笑傲江湖', 'pub_date': datetime.datetime(1995, 12, 24, 0, 0), 'read_count': 20, 'comment_count': 80, 'is_delete': b'\x00'}
{'id': 4, 'name': '雪山飞狐', 'pub_date': datetime.datetime(1987, 11, 11, 0, 0), 'read_count': 58, 'comment_count': 24, 'is_delete': b'\x00'}
  • cursor.fetchall()用于获取所有查询结果
  • cursor.fetchone()用于获取一条查询结果
  • cursor.fetchmany(4)用于获取四条查询结果

数据更新

import pymysql


def update_data():
    db = pymysql.connect(host='localhost', user='root', password='root', db='python_basics')
    cursor = db.cursor()

    sql = """
        update book_info set read_count = read_count + 1 where id = 1;
    """

    try:
        cursor.execute(sql)
        db.commit()

        print('数据更新成功...')
    except Exception as e:
        print(f'数据更新失败: {e}')

        db.rollback()
    finally:
        cursor.close()
        db.close()


if __name__ == '__main__':
    update_data()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1603484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx第2篇-HTTPS配置教程

背景 我最近做个项目要上线,接口部署到服务器,总不能给别人个ip地址加端口吧,而且小程序上线要有接口不能是ip和http协议,必须是https协议。这里记录下使用Nginx配置HTTPS的过程,主要包含以下三部分。 申请域名SSL证…

IDEA plugins 好用的插件集

IDEA plugins RestfulToolkit 1. 安装插件 File–>Settings --> plugins --> RestfulToolkit 2.插件有点: 2.1、帮助把项目中的 RestURL 按照项目汇总出来,找到对应URL直接在IDEA上面进行请求测试。 2.2、开发Java Web页面项目,经…

SpringCloud系列(3)--SpringCloud新建父工程

1、新建项目 2、填写项目名称和工作组名称 3、选择构建项目的Maven版本 4、查看项目编码,若不是UTF-8,需要设置为UTF-8 5、启用注解处理 6、选择项目的编译版本为JDK8 7、查看项目结构,若JDK版本不是8,则给它设置为8 8、删掉父工程…

全国产化无风扇嵌入式车载电脑在车队管理嵌入式车载行业应用

车队管理嵌入式车载行业应用 车队管理方案能有效解决车辆繁多管理困难问题,配合调度系统让命令更加精确有效执行。实时监控车辆状况、行驶路线和位置,指导驾驶员安全有序行驶,有效降低保险成本、事故概率以及轮胎和零部件的磨损与损坏。 方…

短视频矩阵系统----技术源头开发

短视频矩阵系统--- 1. 确定账号类型和目标受众 2. 准备账号资料 3. 搭建系统框架 4. 开发核心功能 5. 测试和调试 6. 部署和维护 7. 推广和运营 在开发短视频账号矩阵系统源码时,可以使用一些开源框架和工具来提高开发效率和降低开发难度。同时,需要组…

pajamas 1 daydream.sequence-template

0. 老实交代,最近对于python,非常之感冒 热天气常驻之后,各种毛病就来了:蚊子很彪悍,牙齿不舒服,肠胃那更是一坨 … 虽然不久前,荷包大残,但是关注到 mac mini 之后,就…

Java面试八股之Iterator和ListIterator的区别是什么

Iterator和ListIterator的区别是什么 这道题也是考查我们对迭代器相关的接口的了解程度,从代码中我们可以看出后者是前者的子接口,在此基础上做了一些增强,并且只用于List集合类型。 定义与基本概念 Iterator: 定义&#xff1a…

【Pytorch】VSCode实用技巧 - 默认终端修改为conda activate pytorch

VScode修改配置使得启动终端为conda环境 VScode跑项目,在启动pytorch项目时往往会有千奇百怪的问题,最常见的就是显示“conda activate pytorch”后会要求“conda init”,但输入后实际上也不行,这是因为VSCode默认终端为 Powersh…

Redis中的基本指令

回顾 上一篇文章介绍了redis的一些特性和安装方式,但光说不练假把式~ 本文就来着重来介绍一下redis中的基本指令 Redis基本结构 Redis是一个客户端-服务器结构的程序(MySQL也是),客户端和服务器可以在同一台主机上,也可以不在同一台主机(本…

OpenCV杂记(1):绘制OSD(cv::getTextSize, cv::putText)

1. 简述 我们使用OpenCV时,有时会在图像的某个位置绘制OSD信息,如绘制一些字符串作为指示信息。 本文将简要介绍在图像(cv::Mat)上绘制固定的字符串信息。 2. 使用的API (1)cv::getTextSize() CV_EXPORT…

Qt 6子窗口全屏显示

一、全屏显示效果 二、全屏相关函数 1,全屏显示函数 QWidget::showFullScreen(); // 此方法只对顶级窗口有效,对子窗口无效 2,恢复显示函数 QWidget::showNormal(); // 此方法也只对顶级窗口有效,对子窗口无效 3,最小化显示函…

陇剑杯 省赛 攻击者1 CTF wireshark 流量分析

陇剑杯 省赛 攻击者1 题目 链接:https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码:haek ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ acce…

【数学】主成分分析(PCA)的应用案例解析(Python)

接着上文PCA的数学详细推导过程,本文介绍使用Python结合图像压缩案例解释PCA的具体实现流程,以了解数据处理的一些方法 Jupyter Notebook file 文章目录 借助 scikit-learn 实现 PCA输入数据PCA降维并重建 手动实现 PCA 过程输入数据数据居中处理协方差矩…

PPTist在线编辑、播放幻灯片

PPTist简介 “一个基于 Vue3.x TypeScript 的在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能,支持 文字、图片、形状、线条、图表、表格、视频、音频、公式 几种最常用的元素类型,每一种元素都拥…

多模态大语言模型综述

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

arcgis中坡向计算工作原理说明

用于识别出从每个像元到其相邻像元方向上值的变化率最大的下坡方向。坡向可以被视为坡度方向。输出栅格中各像元的值可指示出各像元位置处表面的朝向的罗盘方向。将按照顺时针方向进行测量,角度范围介于 0(正北)到 360(仍是正北&a…

Stable Diffusion 模型分享:CyberRealistic XL(真实)cyberrealisticXL_v11VAE.safetensors

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 这是 CyberRealistic 的 SDXL 版本。 该模型的标准…

朗思-我的家园正式上线:朗思科技Agent工具软件--人人拥有“Ai-机器人”

4月16日,朗思科技正式发布"朗思-我的家园"。朗思科技是国内领先的Ai Agent智能自动化工具软件产品及方案的提供商,始终坚持自主研发,全面支持国产信创,不断加快产品创新迭代。基于技术领先性和战略前瞻性,其…

DDoS攻击愈演愈烈,谈如何做好DDoS防御

DDoS攻击是目前最常见的网络攻击方式之一,各种规模的企业包括组织机构都在受其影响。对于未受保护的企业来讲,每次DDoS攻击的平均成本为20万美元。可见,我们显然需要开展更多的DDoS防御工作。除考虑如何规避已发生的攻击外,更重要…

Ubuntu 20.04 LTS 在3588安卓主板上测试yolov8-1.0版本的yolov8n-seg模型

0. 创建虚拟环境 #!< 创建虚拟环境yolov8 $ sudo pip install virtualenv $ sudo pip install virtualenvwrapper $ mkvirtualenv yolov8 -p /usr/bin/python3.81. 将yolov8n-seg.pt转换为yolov8n-seg.onnx文件 #!< 创建项目目录yolov8-rknn并下载yolov8n-seg.pt模型文…