Python实现MySql数据库交互的示例

   2023-02-08 学习力0
核心提示:目录一、使用MySql进行持久化存储二、安装MySql数据库和Python库PyMySQL三、使用pymysql链接mysql数据库四、创建表五、插入数据六、后记一、使用MySql进行持久化存储在任何应用中,都需要持久化存储。一般有 3 种基础的存储机制:文件、数据库系统以及一些混

一、使用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

Python实现MySql数据库交互的示例

验证一下安装是否成功:

Python实现MySql数据库交互的示例

如果能够像上图输出版本信息,则表示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已经能够成功连接到数据库。

Python实现MySql数据库交互的示例

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

Python实现MySql数据库交互的示例

四、创建表

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

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

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

Python实现MySql数据库交互的示例

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()

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

Python实现MySql数据库交互的示例

五、插入数据

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

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()

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

Python实现MySql数据库交互的示例

六、后记

注意,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, 它描述了将在查询中使用的值替换格式。这一变量可能的值如下:

Python实现MySql数据库交互的示例

Python实现MySql数据库交互的示例

原文地址:https://blog.csdn.net/hubing_hust/article/details/128157244
 
标签: Python MySql 交互
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 如何在Abaqus的python中调用Matlab程序
    目录1. 确定版本信息2. 备份python3. 设置环境变量4. 安装程序5. 调试运行参考资料Abaqus2018操作系统Win10 64位Python版本2.7(路径C:\SIMULIA\CAE\2018\win_b64\tools\SMApy\python2.7)2. 备份python将上述的“python2.7”文件夹复制出来,避免因操作错误
    03-16
  • SICP:复数的直角和极坐标的表示(Python实现)
    SICP:复数的直角和极坐标的表示(Python实现)
    数据抽象屏障是控制复杂性的强有力工具,然而这种类型的数据抽象还不够强大有力。从一个另一个角度看,对于一个数据对象可能存在多种有用的表示方式,且我们希望所设计的系统能够处理多种表示形式。比如,复数就可以表示为两种几乎等价的形式:直角坐标形式(
    03-16
  • [个人发展] 我做了一个可以永远谈论任何事情的女士对话AI(TypeScript,Python)
    [个人发展] 我做了一个可以永远谈论任何事情的
    在个人发展中对话式人工智能服务 Eveki我做了虚构角色1这是一项以人工智能为特色的服务,可以再现并享受自然对话。这一次,作为第一个艾小姐发表了。请先尝试实物。服务概览与人工智能对话基本上只需输入您的信息是。对话是用女士的语言进行的,就像人类一样
    03-08
  • ruby写爬虫 ruby python
    ruby写爬虫 ruby python
    http://www.javaeye.com/topic/545160爬虫性能比较http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails/srcapihttp://huacnlee.com/blog/ruby-scrapi-collect-koubei  2009年4月22日 星期三用ruby写的一个网络爬虫程序前
    03-08
  • sf02_选择排序算法Java Python rust 实现
    Java 实现package common;public class SimpleArithmetic {/** * 选择排序 * 输入整形数组:a[n] 【4、5、3、7】 * 1. 取数组编号为i(i属于[0 , n-2])的数组值 a[i],即第一重循环 * 2. 假定a[i]为数组a[k](k属于[i,n-1])中的最小值a[min],即执行初始化 min =i
    02-09
  • Python vs Ruby: 谁是最好的 web 开发语言?
    Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。 这两种语言在许多方面有相似之处。它们都是高级的面向对象的编程语言,都是交互式脚本语言、都提供标准库且支持持久化。但是,Python 和 Ruby 的解决方法却
    02-09
  • 详解Python手写数字识别模型的构建与使用
    详解Python手写数字识别模型的构建与使用
    目录一:手写数字模型构建与保存1 加载数据集2 特征数据 标签数据3 训练集 测试集4 数据流图 输入层5 隐藏层6 损失函数7 梯度下降算法8 输出损失值 9 模型 保存与使用10 完整源码分享二:手写数字模型使用与测试一:手写数字模型构建与保存1 加载数据集# 1加
  • Python asyncore socket客户端实现方法详解
    Python asyncore socket客户端实现方法详解
    目录介绍1.定义类并且继承 asyncore.dispatcher2.实现类中的回调代码调用父类方法创建socket对象连接服务器3.创建对象并且执行asyncore.loop进入运行循环服务端示例代码运行结果注意介绍asyncore库是python的一个标准库,提供了以异步的方式写入套接字服务的
  • Python+Sklearn实现异常检测
    目录离群检测 与 新奇检测Sklearn 中支持的方法孤立森林 IsolationForestLocal Outlier FactorOneClassSVMElliptic Envelope离群检测 与 新奇检测很多应用场景都需要能够确定样本是否属于与现有的分布,或者应该被视为不同的分布。离群检测(Outlier detectio
  • Python基础教程之while循环用法讲解 Python中的while循环
    Python基础教程之while循环用法讲解 Python中的
    目录1.while 循环2.无限循环3、while 循环使用 else 语句4、简单语句组附小练习:总结1.while 循环Python 中 while 语句的一般形式:while 判断条件(condition):    执行语句(statements)……执行流程图如下:同样需要注意冒号和缩进。另外,在 Python 中
点击排行