Python基础之MySql数据库交互

news2024/11/16 7:44:14

Python基础之MySql数据库交互

  • 一、使用MySql进行持久化存储
  • 二、安装MySql数据库和Python库PyMySQL
  • 三、使用pymysql链接mysql数据库
  • 四、创建表
  • 五、插入数据
  • 六、后记

一、使用MySql进行持久化存储

在任何应用中,都需要持久化存储。一般有 3 种基础的存储机制:文件、数据库系统以及一些混合类型。这种混合类型包括现有系统上的 API、 ORM、文件管理器、电子表格、配置文件等。

对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是当文件或创建的数据存储系统不适用于大项目时,我们需要转而使用数据库,大多数复杂的数据驱动的应用是需要使用全功能的关系数据库的。

一个关系数据库管理系统( RDBMS)通常可以管理多个数据库,比如销售、市场、用户支持等,都可以在同一个服务端(如果 RDBMS 基于服务器,可以这样。不过一些简单的系统通常不是基于服务器的)。在本章将要看到的例子中, MySQL 是一种基于服务的RDBMS,因为它有一个服务器进程始终运行以等待命令行输入;而 SQLite 则不会运行服务器。

二、安装MySql数据库和Python库PyMySQL

在开始之前,请确保:

  • 已经安装了MySql数据库并已经开启了相关服务。
  • 正确安装名为PyMySQL的Python库。

MySql数据库的安装请参考另一片文章。此处不再赘述。

在python3中,如果想要将数据存储到mysql中,就需要借助PyMySQL来操作,安装的话,还是推荐使用pip来进行,简单快捷。

相关链接:

  • GitHub : https://github.com/PyMySQL/PyMySQL
  • 官方文梢 : http://pymysql.readthedocs.io/
  • PyPl: https://pypi.python.org/pypi/PyMySQL
pip install pymysql

20221203012102

验证一下安装是否成功:

20221203012611

如果能够像上图输出版本信息,则表示PyMySQL已经成功安装。

三、使用pymysql链接mysql数据库

假设当前MySql服务器运行在本地,用户名为root,密码为123456,运行端口为3306。

尝试连接到数据库并创建一个新的数据库,名字叫testdb

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306)
cur = conn.cursor()
cur.execute('select version()')
data = cur.fetchone()
print(f'database version: {data}')

cur.execute('CREATE DATABASE testdb DEFAULT CHARACTER SET utf8')
conn.close()

能够正常输出版本,说明python已经能够成功连接到数据库。

20221203021204

在数据库中,也可以看到我们刚刚建立的新的数据库。

20221203023435

四、创建表

一般来说,创建数据库的操作只需要执行一次就好了。当然,我们也可以手动创建数据库 。

创建数据库后,在连接时需要额外指定一个参数 db 。

加下来,我们创建一个新的数据表students, 指定3个字段,如下所示:

20221203021800

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='testdb')
cur = conn.cursor()
sql = '''
CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))
'''
cur.execute(sql)
conn.close()

可以看到新的表已经创建成功了。

20221203023543

五、插入数据

这里仅演示一下数据的插入,其他的操作,比如删除数据、更新数据等等,请参考官方文档示例。

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='testdb')
cur = conn.cursor()

sdudent = [
    ('001', '张三', 12),
    ('002', '李四', 13),
    ('003', '王五', 14)]

try:
    cur.executemany("INSERT INTO students(id, name, age) VALUES (%s, %s, %s)", sdudent)
    conn.commit()
except:
    conn.rollback()

conn.close()

查表,可以看到数据已经插入成功。

20221203030858

六、后记

注意,pymysql模块中不能使用占位符 ? , 这点与SQLite不一样。必须使用paramstyle = "pyformat"的风格。

比如

# 这么写会报错
cur.executemany("INSERT INTO students(id, name, age) VALUES (?, ?, ?)", sdudent)

发生异常: TypeError
not all arguments converted during string formatting
File “G:\Code\practice\testpython\mysql.py”, line 10, in
cur.executemany(“INSERT INTO students(id, name, age) VALUES (?, ?, ?)”, sdudent)

# 必须使用paramstyle = "pyformat"的风格
cur.executemany("INSERT INTO students(id, name, age) VALUES (%s, %s, %s)", sdudent)

详情在另一篇文章(《Python数据库编程之关系数据库API规范 》)里有描述,大致原因如下:

在整个数据库模块实现中没有关于占位符的标准规则。但是,每一个模块都定义了一个变量paramstyle, 它描述了将在查询中使用的值替换格式。这一变量可能的值如下:

20221130001542在这里插入图片描述

小手一抖,点个赞再走哦~~

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

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

相关文章

oepncv c++ 连通组件扫描

1、概念 连通组件指在图像上通过四邻域或八邻域法,连接起来的像素值大于某一阈值的区域(这些像素点被称为前景像素),而小于阈值的区域被称为背景。如下图的4个连通组件。 四邻域、八邻域: 2、常用算法 a)基…

35岁程序员,都到哪儿去了?

在很多人眼里,程序员的薪资就是普通人的天花板。关于程序员35岁被优化这个亘古不变的话题,也有不少人冷嘲热讽:你花10年的时间赚到了我30年、40年都赚不到的钱,有什么好焦虑不满呢?钱还不够用吗? 而那些年纪…

榛子云短信验证平台与springboot集成的短信验证

登录 - 榛子云短信用户系统 (zhenzikj.com) 上面是登录榛子云短信验证平台的入口&#xff0c;此平台的短信大概为3.1分一条短信。 如何与spring boot进行集成呢&#xff0c;我以注册为例来慢慢讲解 1.注册号榛子云账号并充值可发送短信 2.在项目pom.xml导入jar包 <!-- 榛…

HTML+CSS+JS我的班级网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

位运算介绍、图解位运算相关题目【一个数字出现了K次,其他数字出现了M次,M > 1 K < M 找到出现了K次的数】【找到出现奇数次的数】等题目

位运算 常见的位运算 >>、>>>、<<、|、&、^、||、&&、~等 原码、反码、补码 原码 将一个整数转换成二进制形式&#xff0c;就是其原码。例如 6 原码就是……0000 0000 0000 0110 反码 对于正数&#xff0c;它的反码就是其原码&#xff08;…

节省50%带宽,这款媒体处理产品了解下!

视频处理技术想必大家都有所了解&#xff0c;现在每天都会涌现出大量新的视频处理模型&#xff0c;它们有的能够超分、降噪&#xff0c;有的能够做目标检测、跟踪、识别&#xff0c;加上一些前端技术就能实现很多炫酷的功能。但是现在大多数模型都是单任务模型&#xff0c;想要…

【POJ No. 2777】 颜色统计 Count Color

【POJ No. 2777】 颜色统计 Count Color 北大OJ 题目地址 【题意】 有一个长L 厘米的电路板&#xff0c;可以将板均分为L 段&#xff08;1&#xff5e;L &#xff09;&#xff0c;每段长1厘米。现在给电路板上色&#xff0c;每段只有一种颜色。可以在电路板上执行两种操作&am…

Qt扫盲-Assistant 助手使用总结

Qt Assistant助手 使用记录预备一、顶部菜单栏1. 快捷栏2. 文件、前往、帮助3. 查看-工具栏4. 编辑-首选项5. 书签二、侧边菜单栏1. 修改显示功能Bar2. 内容3. 索引4. 书签三、内容主体1. 结构总览 Content2. Properties3. Public Functions4. Reimplemented Public Functions5…

【JUC】并发编程学习笔记(三)

JUC并发编程八、ReentrantReadWriteLock 读写锁8.1、概述8.2、案例8.3、读写锁的降级九、BlockingQueue阻塞队列9.1、阻塞队列概述9.2、阻塞队列分类9.2.1、ArrayBlockingQueue(常用)9.2.2、LinkedBlockingQueue(常用)9.2.3、 DelayQueue9.2.4、 PriorityBlockingQueue9.2.5、 …

混合馈能悬架的设计与仿真(MATLAB)

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1课题研究背景和意义 1 1.2国内外研究现状 2 1.3本文的主要研究内容 4 第二章 混合馈能悬架系统的工作原理 5 2.1混合馈能悬架系统的设计理念 5 2.2馈能系统的原理 6 2.3馈能系统的类型 6 2.4混合馈能悬架系统结构选型 8 2.5本章小结…

技术分享 | 如何确保API 的稳定性与正确性?你只需要这一招

现在&#xff0c;越来越多的 Web 应用转向了RESTful的架构&#xff0c;很多产品和应用暴露给用户的往往就是一组 REST API&#xff0c;这样有一个好处&#xff0c;用户可以根据需要&#xff0c;调用不同的 API&#xff0c;整合出自己的应用出来。从这个角度来讲&#xff0c;Web…

前端字体压缩(免费简单易上手)

场景&#xff1a;前端在开发过程中有时候要用到特殊字体&#xff0c;但如果引用网上下载好的字体&#xff0c;它们都是一个全的字体文件&#xff0c;这种字体文件里往往包含了大量你用不到的文字字符&#xff0c;从而导致你引入的字体文件大小高达1M以上&#xff0c;这会严重影…

C++08函数模板

1.自动推导类型 在C语言和C98中&#xff0c;auto 关键字用于修饰变量(自动存储的局部变量)。 在C11中&#xff0c;赋予了auto 全新的含义&#xff0c;不再用于修饰的变量&#xff0c;而是作为一个类型指示符&#xff0c;指示编译器在编译时推导auto声明的变量的数据类型。 在…

SpirngBoot<读完包你更上一层楼>

目录 一、SpringBoot概念 1.1 什么是SpringBoot 1.2 为什么要学习SpringBoot 1.3 SpringBoot的特点 1.4 总结 二、入门案例 2.1 创建工程 2.1.1 创建一个空工程 2.1.2 工程名为project_test&#xff1a; 2.1.3 设置jdk版本为1.8 2.1.4 新建一个module 2.1.5 填写项…

入职字节外包一个月,我离职了

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

[附源码]计算机毕业设计springboot吾悦商城管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

老司机带带你,教你学会Java中又骚又暴力的“反射”技术

在Java中有这么一个很骚的技术&#xff0c;几乎贯穿了所有主流的框架&#xff0c;在所有主流框架的底层中你都可以看见它的身影&#xff0c;这个技术就是反射。关于反射&#xff0c;有很多小白会觉得很难&#xff0c;搞不清楚到底是怎么回事&#xff0c;也不知道该怎么用&#…

VS Code快速实现Git PR操作

注意&#xff1a;建议先学习git的基本操作。 安装插件 下图中红圈标记的插件都安装好。 Fork上游仓库 在网页上点击你想要fork的仓库&#xff0c;点击fork 然后该仓库就会fork到你的github账户下面&#xff0c;如下图。 现在可以在你账户下面的repo&#xff08;我们称为下…

[附源码]Python计算机毕业设计Django和vue的茶文化交流平台的设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Global Mapper 导出图层功能的妙用(重采样、设置文件类型、切片、按掩膜提取or裁剪……)

许多GIS软件都有导出的功能&#xff0c;但其中大部分的导出功能比较单一直接&#xff0c;仅仅是导出而已&#xff0c;或者最多可以改个导出的格式&#xff0c;改个坐标。但是Global Mapper 不一样&#xff0c;导出功能非常非常多&#xff0c;比如重采样&#xff08;可以设置重采…