python和mysql交互

html python mysql交互_mysql及python交互 mysql在之前写过一次,那时是我刚刚进入博客,今天介绍一下mysql的python交互,当然前面会把mysql基本概述一下。目录:一、命令脚本(mysql)1、基本命令2、数据库操作命令3、表操作命令4、数据操作命令5、查6、关联二、python交互1、数据库连接2、创建数据库表3、插入数据4、更新数据库5、删除数据6、数据库查询三、mysql封装(方便使用)1、python封装的my_sql类... 阅读详情

python要和mysql交互,我们利用pymysql这个库。
下载地址:
https://github.com/PyMySQL/PyMySQL

安装(注意cd到我们项目的虚拟环境后):

cd 项目根目录/abc/bin/
#执行
./python3 -m pip install pymysql

稍等片刻,就会把pymysql库下载到项目虚拟环境abc/lib/python3.5/site-packages中。(注意我项目是这个路径,你的不一定)

文档地址:
http://pymysql.readthedocs.io/en/latest/

使用:

import pymysql.cursors

# 连接数据库
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='root',
                             db='test',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT * From news"
        cursor.execute(sql)
        result = cursor.fetchone()
        print(result) # {'id': 1, 'title': '本机新闻标题'}
finally:
    connection.close()

我们连上了本地数据库test,从news表中取数据,数据结果为{'id': 1, 'title': '本机新闻标题'}
这里写图片描述

返回的结果是字典类型,这是因为在连接数据库的时候我们是这样设置的:

# 连接数据库
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='root',
                             db='test',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.Cursor)

我们把cursorclass设置的是:pymysql.cursors.DictCursor。
字典游标,所以结果集是字典类型。
我们修改为如下:

cursorclass=pymysql.cursors.Cursor

结果集如下:

(1, '本机新闻标题')

变成了元组类型。我们还是喜欢字典类型,因为其中包含了表字段。

Cursor对象

主要有4种:

Cursor 默认,查询返回list或者tuple
DictCursor  查询返回dict,包含字段名
SSCursor    效果同Cursor,无缓存游标
SSDictCursor 效果同DictCursor,无缓存游标。

插入

try:
    with connection.cursor() as cursor:
        sql = "INSERT INTO news(`title`)VALUES (%s)"
        cursor.execute(sql,["今天的新闻"])

    # 手动提交 默认不自动提交
    connection.commit()
finally:
    connection.close()

一次性插入多条数据

try:
    with connection.cursor() as cursor:
        sql = "INSERT INTO news(`title`)VALUES (%s)"
        cursor.executemany(sql,["新闻标题1","新闻标题2"])

    # 手动提交 默认不自动提交
    connection.commit()
finally:
    connection.close()

注意executemany()有别于execute()。

sql绑定参数

sql = "INSERT INTO news(`title`)VALUES (%s)"
cursor.executemany(sql,["新闻标题1","新闻标题2"])

我们用%s占位,执行SQL的时候才传递具体的值。上面我们用的是list类型:

["新闻标题1","新闻标题2"]

可否用元组类型呢?

cursor.executemany(sql,("元组新闻1","元组新闻2"))

同样成功插入到数据表了。

把前面分析得到的基金数据入库

创建一个基金表:

CREATE TABLE `fund` (
    `code` varchar(50) NOT NULL,
    `name` varchar(255),
    `NAV` decimal(5,4),
    `ACCNAV` decimal(5,4),
    `updated_at` datetime,
    PRIMARY KEY (`code`)
) COMMENT='基金表';

准备插入SQL:

INSERT INTO fund(`code`,`name`,`NAV`,`ACCNAV`,`updated_at`)VALUES (%(code)s,%(name)s,%(NAV)s,%(ACCNAV)s,%(updated_at)s)

注意%(code)s这种占位符,要求我们执行这SQL的时候传入的参数必须是字典数据类型。

MySQL小知识:
在插入的时候如果有重复的主键,就更新

insert into 表名 xxxx ON duplicate Key  update 表名

我们这里要准备执行的SQL就变成这样了:

INSERT INTO fund(code,name,NAV,ACCNAV,updated_at)VALUES (%(code)s,%(name)s,%(NAV)s,%(ACCNAV)s,%(updated_at)s)
ON duplicate Key  UPDATE updated_at=%(updated_at)s,NAV=%(NAV)s,ACCNAV=%(ACCNAV)s;

1、回顾我们前面分析处理的基金网站数据
http://blog.youkuaiyun.com/github_26672553/article/details/78529734

#...
codes = soup.find("table",id="oTable").tbody.find_all("td","bzdm")

result = () # 初始化一个元组
for code in codes:
    result += ({
        "code":code.get_text(),
        "name":code.next_sibling.find("a").get_text(),
        "NAV":code.next_sibling.next_sibling.get_text(),
        "ACCNAV":code.next_sibling.next_sibling.next_sibling.get_text()
     },)

最后我们是把数据存放在一个result的元组里了。
我们打印这个result可以看到:

({'code': '004223', 'ACCNAV': '1.6578', 'name': '金信多策略精选灵活配置', 'NAV': '1.6578'}, ...}

元组里每个元素 都是字典。
看字典是不是我们数据表的字段能对应了,但还少一个updated_at字段的数据。

2、我们把分析的网页数据重新处理一下

from datetime import datetime
updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
result = () # 初始化一个元组
for code in codes:
    result += ({
        "code":code.get_text(),
        "name":code.next_sibling.find("a").get_text(),
        "NAV":code.next_sibling.next_sibling.get_text(),
        "ACCNAV":code.next_sibling.next_sibling.next_sibling.get_text(),
        "updated_at":updated_at
     },)

3、最后插入的代码


try:
    with connection.cursor() as cursor:

        sql = """INSERT INTO fund(`code`,`name`,`NAV`,`ACCNAV`,`updated_at`)VALUES (%(code)s,%(name)s,%(NAV)s,%(ACCNAV)s,%(updated_at)s)
ON duplicate Key  UPDATE `updated_at`=%(updated_at)s,`NAV`=%(NAV)s,`ACCNAV`=%(ACCNAV)s"""

        cursor.executemany(sql,result)

    # 手动提交 默认不自动提交
    connection.commit()
finally:
    connection.close()

这里写图片描述

4、完整的分析html内容(基金网站网页内容),然后插入数据库代码:

from bs4 import BeautifulSoup
import pymysql.cursors
from datetime import datetime

# 读取文件内容
with open("1.txt", "rb") as f:
    html = f.read().decode("utf8")
    f.close()

# 分析html内容
soup = BeautifulSoup(html,"html.parser")


# 所有基金编码
codes = soup.find("table",id="oTable").tbody.find_all("td","bzdm")

updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
result = () # 初始化一个元组
for code in codes:
    result += ({
        "code":code.get_text(),
        "name":code.next_sibling.find("a").get_text(),
        "NAV":code.next_sibling.next_sibling.get_text(),
        "ACCNAV":code.next_sibling.next_sibling.next_sibling.get_text(),
        "updated_at":updated_at
     },)



# 连接数据库
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='root',
                             db='test',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.Cursor)

try:
    with connection.cursor() as cursor:

        sql = """INSERT INTO fund(`code`,`name`,`NAV`,`ACCNAV`,`updated_at`)VALUES (%(code)s,%(name)s,%(NAV)s,%(ACCNAV)s,%(updated_at)s)
ON duplicate Key  UPDATE `updated_at`=%(updated_at)s,`NAV`=%(NAV)s,`ACCNAV`=%(ACCNAV)s"""

        cursor.executemany(sql,result)

    # 手动提交 默认不自动提交
    connection.commit()
finally:
    connection.close()
python与mysql交互与mysql数据库基本使用方法 因此,我们只需要了解mysql的数据库如何使用和基本的python与mysql连接方式则可以进行交互使用,在python中也可以改变、创建数据库的内容,这也是利用python和mysql储存数据进行后端数据支持前需要学习的最基本的内容。 阅读详情

相关推荐

Upload Symbols Failed:The archive did not include a dSYM for the LiveKitWebRTC.framework with the UU

你需要从源码构建 LiveKitWebRTC,而不是使用 CocoaPods 安装的预编译 .xcframework。Step 2: 修改 Podfile 使用本地路径引用(不是从源下载的 xcframework)方法 :强制从源码构建 LiveKitWebRTC.framework(推荐)这样它就会编译 WebRTC 并带上正确 UUID 的 dSYM。替换路径为你 clone 下来的 LiveKit 源码位置。Step 1: 克隆源码仓库。

baidu_40537062的博客 2131

Python数据分析中的数据库连接的基本操作,轻松完成与数据库的交互

数据库是一种用于存储和管理数据的系统,可以提供高效的数据读写和查询功能。在数据分析中,常见的数据库有关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB、Redis)。无论使用哪种类型的数据库,Python都提供了丰富的支持来进行连接和数据提取。

网络技术联盟站 530

从2D到3D地图开发:手把手教你用Cesium+Three.js实现卫星轨迹可视化(含代码片段)

本文详细介绍了如何结合Cesium与Three.js实现从2D到3D的卫星轨迹可视化。通过对比传统Web GIS框架的局限,阐述了Cesium处理三维地理与轨道数据、Three.js负责高级图形渲染的分工优势,并提供了从环境搭建、坐标同步到动态粒子效果实现的完整代码实战指南。

nut55的博客 670

【零基础专属方法】html调用本地python程序进行交互 前后端交互

HTML调用本地python程序,实现前后端实时交互,项目展示

南城果宝的满腹经纶 2万+

从零开始搭建属于自己的语音识别API服务器(ASRT开源项目)

材料准备 云服务器 (本人使用的的是阿里云服务器 Ubuntu(Linux操作系统)) 环境搭建 1. Python 3.7 话不多说直接上代码 sudo su yum -y install git yum -y install gcc yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-deve

zhi_qian的博客 5647

Android性能分析——GPU资源耗尽分析(二十六)

本文分析了Android车机系统中GPU资源耗尽导致应用闪退的案例。通过日志定位到EGL_BAD_ALLOC错误,表明系统无法分配足够图形资源创建EGL上下文。问题主要发生在渲染线程初始化EGL环境时,根源在于车机系统对GPU资源的严格限制(如EGLContext数量、GPU内存等)。文中详细解读了SkiaOpenGLPipeline和EglManager的源码调用链路,指出createContext()函数中的致命断言是崩溃的直接原因,并提出了移除断言、增加重试机制、优雅降级等改进方案。该案例揭示了资源受

小旭的专栏 675

SQL学习之 INSERT INTO

假设我们要向 "Websites" 表中插入一个新行。 INSERT INTO websites (id, name, url, alexa, country) VALUES (7, 'name', 'https://www.runbo.com/', 67, 'CN') 在指定的列插入数据 我们也可以在指定的列插入数据。 下面的 SQL 语句将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据 INSERT INTO websites (id, name,

zhaoxiaoba123的博客 384

【C语言】程序员筑基功法——《函数栈帧的创建与销毁》

汇编角度带你走进函数栈帧

StackFrame 3656

pymysql基本操作

对于修改表结构,插入,查询,删除数据等操作,与上面的操作大体一样,主要是对 sql 语句的编写,此处不做赘述。整体过程为:连接数据库 -> 创建游标对象 -> 编写sql语句 -> 执行sql语句 -> 获取结果 -> 关闭游标->关闭数据库连接上面的知识都较为基础,感兴趣的小伙伴也可以去查找其他的资料进行深入的学习哈。

qq_50280292的博客 1277

多径衰落信道的 MATLAB 仿真

在无线通信系统中,信号在传输过程中会经历多径传播现象,导致信号在接收端出现时域和频域上的扩展。通过以上示例代码,我们可以进行多径衰落信道的 MATLAB 仿真。同时,我们还可以通过调整信道参数和信号特性,进一步研究多径衰落对系统性能的影响。常用的模型之一是瑞利衰落信道模型,它假设信号在传输过程中受到多个散射路径的影响。除了瑞利衰落信道模型,我们还可以使用其他类型的信道模型,如高斯衰落信道模型。在上述代码中,我们首先定义了信道的参数,包括最大多普勒频移、多径延迟和多径功率衰落。函数来模拟高斯衰落信道。

TechCraze的博客 665

小米15修复“NV损坏” 去除主板校验电阻步骤解析与图示

小米15系列将搭载骁龙8至尊版处理器,采用台积电3nm工艺。文章分析了手机出现"NV损坏"故障的表现及修复方法,包括通信异常、系统启动问题等典型症状,并介绍了去除主板校验电阻和刷写工程固件两种修复方案。重点讲解了去除主板电阻后刷写QCN文件的操作流程,强调在维修过程中需要结合分析与思考。适用于小米15系列特定机型(24129PN74G/I/C)的硬件修复。

小马哥的专栏 311

html python 交互_python与html交互详解

1.Jinji2模板引擎(Falsk内置模板引擎,来源与另一个框架Django)例:render_template()中传模板以及入参,那么在模板中可以直接通过{{}}来使用2.定义路由入参(入参类型)以及路由请求格式(路由默认只支持GET请求)例:通过表明只接收orderId为int类型的参数,请求格式由methods=['','']格式实现3.模板中注释使用:{#注释内容#} 实现,快捷键:C...

weixin_39928818的博客 8207

1、初探 Tiny Machine Learning

Tiny Machine Learning(TinyML)是机器学习与嵌入式系统的融合领域,致力于在资源受限的微控制器上运行AI模型。本文介绍了机器学习基础、TinyML的核心概念、应用领域(如智能家居、工业物联网、医疗保健)、面临的挑战(如资源限制、模型压缩、数据质量),以及从硬件准备到模型部署的实践步骤。通过利用训练与推理的资源不对称性,可在PC上训练模型并部署至低功耗设备进行实时推理,推动边缘智能的发展。

loss4bartender的博客 121

mysql与python的交互

mysql是一种关系型数据库,是为了表示事物与事物之间的关系,本身存于数据库中的内容意义并不大,所以广泛应用于编程语言中,python中九含有与MySQL交互的模块 pymysql 编程对mysql的操作 #首先需要引入pymysql模块 import pymysql #连接数据库 一般需要几个参数:host database user password port charset my_conn = pymysql.connect(host="localhost", u...

211

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python基础之MySql数据库交互

在任何应用中,都需要持久化存储。一般有 3 种基础的存储机制:文件、数据库系统以及一些混合类型。这种混合类型包括现有系统上的 API、 ORM、文件管理器、电子表格、配置文件等。对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是当文件或创建的数据存储系统不适用于大项目时,我们需要转而使用数据库,大多数复杂的数据驱动的应用是需要使用全功能的关系数据库的。一个关系数据库管理系统( RDBMS)通常可以管理多个数据库,比如销售、市场、用户支持等,都可以在同一个服务端(如果 RDBMS 基于服务器,可

hubing_hust的专栏 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python与MySQL交互

pymysql

happy_wealthy的博客 2175

mysql与Python交互

bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/jdk/BIN:/usr/local/jdk/bin: 没有那个文件或目录。[root@m ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ 进行初始化。创建可以连接外部的账号。在python(写成脚本执行)

qq_69194497的博客 1208

python与mysql交互

python与mysql交互,该代码主要是把sql语句提取出来了,便于扩展,适合新手看看import pymysql dict_data = dict() def outer_0(choose_method): """将所有要执行的代码用装饰器封装""" def inner_0(fun): def wrapped_0(): conn =...

fanlei5458的博客 518

四十八、mysql数据库7:Mysql与python的交互、参数化(重点python与mysql交互传参)

一、使用python命令连接数据库流程 二、python3 安装pymysql包 创建py文件,进行插入数据:通过python文件来连接数据库实现交互(前提需要安装pymysql包) 1、Linux下安装pymysql包 在python3的环境下安装pymysql包:pip3 install pymysql进行安装。 提示升级可使用命令更新: 更新完再安装一下 2、Win...

xk1761299425的博客 4906

mysql与python交互

ER模型:1.一对多一 2.一对多 3.多对多 mysql语句规范: 1、不区分大小写,但是建议关键字大写,表名 列名小写 2、每一条命令用分号结尾 3、每条命令根据需要,进行缩进或者换行 4、注释 单行注释#注释文字 – 注释(注意需要有空格) 多行注释: /* 注释文字 */ mysql与python交互: 1.创建链接 2.获取可操作对象,通过可操作对象,执行数据库语句 3.查询语句,执...

Pseudolover的博客 235

Python与MySQL交互实例

Python是一种功能强大的编程语言,而MySQL是一个广泛使用的关系型数据库管理系统。将两者结合,可以实现高效的数据存储、检索和处理。Python拥有丰富的数据库连接库,使得与MySQL的交互变得非常便捷。

alicyh的专栏 455

python如何与MySQL数据库进行交互

python与MySQL数据库进行交互时,python2与python3的方式是不同的,下面分别对python2以及python3连接mysql数据库进行分析。1、python2与MySQL交互python2与mysql进行交互,首先需要安装MySQLdb这个工具包,也就是需要安装MySQL-python安装MySQL-python:pip install MySQL-python官网链接:点击打...

codingforhaifeng的博客 2806

python与mysql交互_MySQL与Python交互

关于MySQL推荐一本书MySQL必知必会首先安装第三方模块(ubuntu下Python2)sudo apt-get install python-mysql假设有一数据库test1,里面有一张产品信息表products,向其中插入一条产品信息,程序如下:#-*- coding: utf-8 -*-importMySQLdbtry:conn=MySQLdb.connect(host='localh...

weixin_39548193的博客 96

python中web应用与mysql数据库交互

7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API。 7.1基于数据库的web应用 之前我们把日志数据存放在一个文本文件中,无法得知第六章最开始的请求:已经响应了多少个请求?最常用的字母列表是什么?请求来自哪个IP地址?哪个浏览器用的最多? 现使用mysql数据库存放日志数据: ...

weixin_30294021的博客 1743

python与mysql交互详解

python与MySQL交互一、数据准备二、pymysql模块的使用三、实例的介绍1. 面向对象的方法 完成查询2. 添加增加功能3.查询-->包含sql注入4.解决sql注入四、总结 一、数据准备 数据库准备 -- 数据准备 -- 创建京东数据库 create database jing_dong charset=utf8; -- 创建一个商品goods数据表 create table goods( id int unsigned primary key auto_incremen

sugar 487
上一篇: Python获取网页内容、使用BeautifulSoup库分析html
下一篇: python里比较流行的ORM框架:sqlalchemy
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值