啼晓 發表於 2021-8-15 14:50:00

Python - 操作 MySQL 数据库

<h3>Python DB-API 规范</h3>
<div class="cl-preview-section">
<ul>
<li>Python <span style="color: rgba(210, 44, 74, 1)">所有的数据库</span>接口程序都在一定程度上遵守 Python DB-API 规范</li>
<li>Python DB-API 是一个规范,它定义了一系列必须的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口</li>
<li>在没有 Python DB-API 之前,各数据库之间的应用接口非常混乱,实现各不相同</li>
<li>如果项目需要更换数据库时,则需要做大量的修改,非常不便</li>
<li>Python DB-API 的出现就是为了解决这样的问题</li>
<li>由于 Python DB-API 为不同的数据库提供了一致的访问接口, 在不同的数据库之间移植代码成为一件轻松的事</li>
</ul>
<p>&nbsp;</p>
<h3>什么是 PyMySQL?</h3>
<p>PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb</p>
<p>&nbsp;</p>
<h4>安装</h4>
<div class="cnblogs_code">
<pre>pip3 <span style="color: rgba(0, 0, 255, 1)">install</span> PyMySQL</pre>
</div>
<p>&nbsp;</p>
<h3>完整的简单小栗子</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 _*-</span>
<span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(128, 0, 0, 1)">
# author: 小菠萝测试笔记
# blog:https://www.cnblogs.com/poloyy/
# time: 2021/8/12 3:06 下午
# file: 连接mysql.py
</span><span style="color: rgba(128, 0, 0, 1)">"""</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> pymysql

db </span>=<span style="color: rgba(0, 0, 0, 1)"> pymysql.connect(
    host</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port</span>=3306<span style="color: rgba(0, 0, 0, 1)">,
    user</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1234567890</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MockServer</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 cursor() 方法创建一个游标对象 cursor</span>
cursor =<span style="color: rgba(0, 0, 0, 1)"> db.cursor()

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 execute()方法执行 SQL 查询</span>
cursor.execute(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">select * from api</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 fetchone() 方法获取单条数据.</span>
data =<span style="color: rgba(0, 0, 0, 1)"> cursor.fetchone()

</span><span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">data is: %s </span><span style="color: rgba(128, 0, 0, 1)">"</span> %<span style="color: rgba(0, 0, 0, 1)"> data)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 关闭数据库连接</span>
db.close()</pre>
</div>
<p>&nbsp;</p>
<h3>访问数据库</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">pymysql.connect(
    host </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port </span>= 3306<span style="color: rgba(0, 0, 0, 1)">,
    user </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123456</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db </span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MockServer</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)</span></pre>
</div>
<div class="cl-preview-section">
<p>connect 方法生成一个 connect 对象, 通过这个对象来访问数据库</p>
<p>&nbsp;</p>
<h4>connect 方法的参数</h4>
</div>
<div class="cl-preview-section">
<div class="table-wrapper">
<table>
<thead>
<tr><th>参数</th><th>功能</th></tr>
</thead>
<tbody>
<tr>
<td>user</td>
<td>访问数据库的用户</td>
</tr>
<tr>
<td>password</td>
<td>访问数据库的密码</td>
</tr>
<tr>
<td>host</td>
<td>Mysql 数据库服务所在的主机</td>
</tr>
<tr>
<td>port</td>
<td>Mysql 数据库服务的端口号,默认值为 3306</td>
</tr>
<tr>
<td>db</td>
<td>数据库名</td>
</tr>
<tr>
<td>charset</td>
<td>字符编码</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3>connect 对象</h3>
<ul>
<li>使用 connect() 方法与数据库连接成功后,connect() 方法返回一个 connect() 对象</li>
<li>与数据库进行通信时, 向 connect 对象发送 SQL 查询命令, 并 connect 对象接收 SQL 查询结果</li>
</ul>
<p>&nbsp;</p>
<h4>常用方法</h4>
<table>
<thead>
<tr><th>方法</th><th>功能</th></tr>
</thead>
<tbody>
<tr>
<td>close()</td>
<td>关闭数据库连接</td>
</tr>
<tr>
<td>commit()</td>
<td>提交当前事务</td>
</tr>
<tr>
<td>rollback()</td>
<td>取消当前事务</td>
</tr>
<tr>
<td>cursor()</td>
<td>创建一个游标对象用于执行 SQL 查询命令</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3>cursor 对象</h3>
<p>cursor 对象用于执行 SQL 命令和得到 SQL 查询结果&nbsp;</p>
<p>&nbsp;</p>
<h4>常用方法</h4>
<div class="cl-preview-section">
<div class="table-wrapper">
<table>
<thead>
<tr><th>方法</th><th>功能</th></tr>
</thead>
<tbody>
<tr>
<td>close()</td>
<td>关闭游标对象</td>
</tr>
<tr>
<td>execute()</td>
<td>执行一个数据库查询或命令</td>
</tr>
<tr>
<td>fetchone()</td>
<td>返回结果集的下一行</td>
</tr>
<tr>
<td>fetchall()</td>
<td>返回结果集中所有行</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cl-preview-section">&nbsp;</div>
<h3 class="cl-preview-section">创建数据库</h3>
<div class="cnblogs_code">
<pre>db =<span style="color: rgba(0, 0, 0, 1)"> pymysql.connect(
    host</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port</span>=3306<span style="color: rgba(0, 0, 0, 1)">,
    user</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1234567890</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">MockServer</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 cursor() 方法创建一个游标对象 cursor</span>
cursor =<span style="color: rgba(0, 0, 0, 1)"> db.cursor()

sql </span>= <span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(128, 0, 0, 1)">SET character_set_database=utf8;
SET character_set_server=utf8;
DROP DATABASE IF EXISTS school;
CREATE DATABASE school;
USE school;</span><span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(0, 0, 0, 1)">
lists </span>= sql.split(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\n</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> lists:
    cursor.execute(i)

create_sql </span>= <span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(128, 0, 0, 1)">
CREATE TABLE students(
    sno VARCHAR(32),
    name VARCHAR(32),
    age INT
);
</span><span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(0, 0, 0, 1)">
cursor.execute(create_sql)
insert_sql </span>= <span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(128, 0, 0, 1)">
INSERT INTO students(sno, name, age) VALUES ('1', '张三', '20');
</span><span style="color: rgba(128, 0, 0, 1)">"""</span><span style="color: rgba(0, 0, 0, 1)">
cursor.execute(insert_sql)
db.commit()
db.close()</span></pre>
</div>
<p>&nbsp;</p>
<h3 class="cl-preview-section">查询数据</h3>
<div class="cnblogs_code">
<pre>db =<span style="color: rgba(0, 0, 0, 1)"> pymysql.connect(
    host</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port</span>=3306<span style="color: rgba(0, 0, 0, 1)">,
    user</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1234567890</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">school</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 cursor() 方法创建一个游标对象 cursor</span>
cursor = db.cursor()</pre>
</div>
<p>&nbsp;</p>
<h4 class="cl-preview-section">fetchall</h4>
<div class="cnblogs_code">
<pre>sql = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">select * from students;</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">

rows </span>=<span style="color: rgba(0, 0, 0, 1)"> cursor.execute(sql)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 记录数</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">there are %d students</span><span style="color: rgba(128, 0, 0, 1)">"</span> %<span style="color: rgba(0, 0, 0, 1)"> rows)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 可迭代对象</span>
students =<span style="color: rgba(0, 0, 0, 1)"> cursor.fetchall()<br>
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 循环输出</span>
<span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> students:
    </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(i)


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 输出结果</span>
there are 1<span style="color: rgba(0, 0, 0, 1)"> students
(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">张三</span><span style="color: rgba(128, 0, 0, 1)">'</span>, 20)</pre>
</div>
<p>&nbsp;</p>
<h4 class="cl-preview-section">fetchone</h4>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询数据 - fetchone</span>
sql = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">select * from students;</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">

rows </span>=<span style="color: rgba(0, 0, 0, 1)"> cursor.execute(sql)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 根据记录数循环</span>
<span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> range(rows):
    student </span>=<span style="color: rgba(0, 0, 0, 1)"> cursor.fetchone()
    </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(student)


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 输出结果</span>
(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">张三</span><span style="color: rgba(128, 0, 0, 1)">'</span>, 20)</pre>
</div>
<p>&nbsp;</p>
<h4 class="cl-preview-section">fetchmany</h4>
<div class="cl-preview-section">可以自定义返回多少条记录数</div>
<div class="cl-preview-section">&nbsp;
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询数据 - fetchmany</span>
sql = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">select * from students;</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">

rows </span>=<span style="color: rgba(0, 0, 0, 1)"> cursor.execute(sql)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 可迭代对象</span>
students = cursor.fetchmany(3<span style="color: rgba(0, 0, 0, 1)">)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 循环结果集</span>
<span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> students:
    </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(i)


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 输出结果</span>
(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">100</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">小菠萝</span><span style="color: rgba(128, 0, 0, 1)">'</span>, 24)</pre>
</div>
<p>&nbsp;</p>
<h3>增加数据</h3>
<div class="cnblogs_code">
<pre>db =<span style="color: rgba(0, 0, 0, 1)"> pymysql.connect(
    host</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port</span>=3306<span style="color: rgba(0, 0, 0, 1)">,
    user</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1234567890</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">school</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 cursor() 方法创建一个游标对象 cursor</span>
cursor =<span style="color: rgba(0, 0, 0, 1)"> db.cursor()

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 增加数据</span>
sno = 100<span style="color: rgba(0, 0, 0, 1)">
name </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">小菠萝</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
age </span>= 24<span style="color: rgba(0, 0, 0, 1)">

sql </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">insert into students(sno,name,age) VALUES("%s", "%s", %d)</span><span style="color: rgba(128, 0, 0, 1)">'</span> %<span style="color: rgba(0, 0, 0, 1)"> (sno, name, age)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 执行 insert sql</span>
rows =<span style="color: rgba(0, 0, 0, 1)"> cursor.execute(sql)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查看 insert 语句返回结果,其实就是执行成功了多少条数据</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Insert %d students</span><span style="color: rgba(128, 0, 0, 1)">'</span> %<span style="color: rgba(0, 0, 0, 1)"> rows)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 只有调用了 commit 方法才能将数据落盘,即提交 insert 操作</span>
<span style="color: rgba(0, 0, 0, 1)">db.commit()


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 输出结果</span>
Insert 1 students</pre>
</div>
<p>&nbsp;</p>
</div>
<h3>修改数据</h3>
<div class="cnblogs_code">
<pre>db =<span style="color: rgba(0, 0, 0, 1)"> pymysql.connect(
    host</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port</span>=3306<span style="color: rgba(0, 0, 0, 1)">,
    user</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1234567890</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">school</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 cursor() 方法创建一个游标对象 cursor</span>
cursor =<span style="color: rgba(0, 0, 0, 1)"> db.cursor()

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 更新数据</span>
sno = 10<span style="color: rgba(0, 0, 0, 1)">
name </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">小菠萝</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
age </span>= 44<span style="color: rgba(0, 0, 0, 1)">

sql </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">UPDATE students SET name="%s", age=%d WHERE sno="%s"</span><span style="color: rgba(128, 0, 0, 1)">'</span> %<span style="color: rgba(0, 0, 0, 1)"> (name, age, sno)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 执行 update sql</span>
rows =<span style="color: rgba(0, 0, 0, 1)"> cursor.execute(sql)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 返回成功修改记录的条数</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">update %d students</span><span style="color: rgba(128, 0, 0, 1)">'</span> %<span style="color: rgba(0, 0, 0, 1)"> rows)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 调用 commit,才会将 update 操作提交</span>
<span style="color: rgba(0, 0, 0, 1)">db.commit()


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 输出结果</span>
update 1 students</pre>
</div>
<p>&nbsp;</p>
<h3>删除数据</h3>
<div class="cnblogs_code">
<pre>db =<span style="color: rgba(0, 0, 0, 1)"> pymysql.connect(
    host</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">localhost</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    port</span>=3306<span style="color: rgba(0, 0, 0, 1)">,
    user</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    password</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">1234567890</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    db</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">school</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    charset</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用 cursor() 方法创建一个游标对象 cursor</span>
cursor =<span style="color: rgba(0, 0, 0, 1)"> db.cursor()

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 更新数据</span>
sno = 10<span style="color: rgba(0, 0, 0, 1)">
name </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">小菠萝</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
age </span>= 44<span style="color: rgba(0, 0, 0, 1)">

sql </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">DELETE FROM students</span><span style="color: rgba(128, 0, 0, 1)">'</span>

<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 执行 delete sql</span>
rows =<span style="color: rgba(0, 0, 0, 1)"> cursor.execute(sql)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 返回成功修改记录的条数</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">delete %d students</span><span style="color: rgba(128, 0, 0, 1)">'</span> %<span style="color: rgba(0, 0, 0, 1)"> rows)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 调用 commit,才会将 delete 操作提交</span>
<span style="color: rgba(0, 0, 0, 1)">db.commit()


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 输出结果</span>
delete 2 students</pre>
</div>
<p>&nbsp;</p>
</div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/poloyy/p/15130758.html
頁: [1]
查看完整版本: Python - 操作 MySQL 数据库