Python 学习笔记 - 操作MySQL

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

Python里面操作MySQL可以通过两个方式:

  1. pymysql模块

  2. ORM框架的SQLAchemey


本节先学习第一种方式。


学习Python模块之前,首先看看MySQL的基本安装和使用,具体语法可以参考豆子之前的博客http://beanxyz.blog.51cto.com/5570417/1609972

或者官方简介

https://mariadb.com/kb/en/mariadb/basic-sql-statements/


简单的回顾一下基本环境的搭建:


首先安装Mariadb(我的环境是CentOS7)

1
2
yum  install  mariadb*
systemctl start mariadb

配置防火墙

1
2
firewall-cmd --add-port=3306 /tcp  --permanent
systemctl restart firewalld

配置root密码

1
2
mysqladmin  - u root password  'mysql'
mysql  - uroot  - p


创建一个测试用的数据库和表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MariaDB [(none)]> create database mydb;
Query OK, 1 row affected (0.00 sec)
 
MariaDB [(none)]> use mydb
Database changed
MariaDB [mydb]> create table student( id  int not null auto_increment,name varchar(10), primary key( id ));
Query OK, 0 rows affected (0.04 sec)
 
MariaDB [mydb]> insert into student(name) values( 'Jay' ),( 'Bob' ),( 'Alex' );
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
MariaDB [mydb]>  select  * from student;
+----+------+
id  | name |
+----+------+
|  1 | Jay  |
|  2 | Bob  |
|  3 | Alex |
+----+------+
3 rows  in  set  (0.00 sec)


创建一个远程访问的账户

1
2
3
4
5
6
MariaDB [(none)]> create user yli@10.2.100.60;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]>  set  password  for  yli@ '10.2.100.60' =password( 'yli' );
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all privileges on mydb.* to yli@10.2.100.60;
Query OK, 0 rows affected (0.00 sec)


然后安装一个图形界面的工具Navicat,绑定数据库

wKioL1gij7nxF_w0AADPQRGw3qE012.png

wKiom1gij7rh9UoaAADlgxB33VI628.png


这样一个基本的测试环境就搭建好了。


现在来看看pymysql的使用。


在我的客户端安装一下pymysql的模块

1
2
3
4
5
6
C:\WINDOWS\system32>pip  install  pymysql
Collecting pymysql
   Downloading PyMySQL-0.7.9-py3-none-any.whl (78kB)
     100% | ################################| 81kB 610kB/s
Installing collected packages: pymysql
Successfully installed pymysql-0.7.9


Python源码演示


查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import  pymysql
#打开数据库连接
conn  =  pymysql.connect(host = 'sydnagios' , port = 3306 , user = 'yli' , passwd = 'yli' , db = 'mydb' )
#创建一个游标对象
cursor  =  conn.cursor(cursor = pymysql.cursors.DictCursor)
#SQL查询
cursor.execute( "select * from student" )
# 获取第一行数据
# row_1 = cursor.fetchone()
# print(row_1)
# 获取前n行数据
# row_2 = cursor.fetchmany(3)
# 获取所有数据
row_3  =  cursor.fetchall()
print (row_3)
#scroll可以使用相对位置或者绝对位置,这里相对位置(末尾)向上移动2行
cursor.scroll( - 2 ,mode = 'relative' )
row_3  =  cursor.fetchall()
print (row_3)
#提交,不然无法保存新的数据
conn.commit()
#关闭游标
cursor.close()
#关闭连接
conn.close()
- - - - - - - - - - -
[{ 'id' 1 'name' 'Jay' }, { 'id' 2 'name' 'Bob' }, { 'id' 3 'name' 'Alex' }]
[{ 'id' 2 'name' 'Bob' }, { 'id' 3 'name' 'Alex' }]


修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import  pymysql
conn  =  pymysql.connect(host = 'sydnagios' , port = 3306 , user = 'yli' , passwd = 'yli' , db = 'mydb' )
cursor  =  conn.cursor(cursor = pymysql.cursors.DictCursor)
cursor.execute( "Update student set name='BoB' where id=2" )
cursor.execute( "select * from student" )
row_3  =  cursor.fetchall()
print (row_3)
conn.commit()
cursor.close()
conn.close()
- - - - - - - - - -
[{ 'id' 1 'name' 'Chris' }, { 'id' 2 'name' 'BoB' }, { 'id' 3 'name' 'Alex' }]


删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import  pymysql
conn  =  pymysql.connect(host = 'sydnagios' , port = 3306 , user = 'yli' , passwd = 'yli' , db = 'mydb' )
cursor  =  conn.cursor(cursor = pymysql.cursors.DictCursor)
cursor.execute( "delete from student where id=2" )
cursor.execute( "select * from student" )
row_3  =  cursor.fetchall()
print (row_3)
conn.commit()
cursor.close()
conn.close()
- - - - - - - - - -
[{ 'id' 1 'name' 'Chris' }, { 'id' 2 'name' 'BoB' }, { 'id' 3 'name' 'Alex' }]


添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import  pymysql
conn  =  pymysql.connect(host = 'sydnagios' , port = 3306 , user = 'yli' , passwd = 'yli' , db = 'mydb' )
cursor  =  conn.cursor(cursor = pymysql.cursors.DictCursor)
cursor.execute( "insert into student(name) value ('ZhangSan'),('LiSi')" )
cursor.execute( "select * from student" )
row_3  =  cursor.fetchall()
print (row_3)
conn.commit()
cursor.close()
conn.close()
- - - - - - - - - -
[{ 'name' 'Chris' 'id' 1 }, { 'name' 'Alex' 'id' 3 }, { 'name' 'ZhangSan' 'id' 4 }, { 'name' 'LiSi' 'id' 5 }]





本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1871039,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除
|
8天前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之DataWorks在同步mysql时报错Code:[Framework-02],mysql里面有个json类型字段,是什么原因导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
27 0
|
8天前
|
关系型数据库 MySQL Java
使用shardingjdbc执行MySQL游标操作时报错
使用shardingjdbc执行MySQL游标操作时报错
|
8天前
|
存储 SQL 关系型数据库
mysql查询数据库表大小怎么操作
mysql查询数据库表大小怎么操作
|
8天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host='localhost',user='root',password='yourpassword',database='yourdatabase'),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
21 0
|
9天前
|
SQL 关系型数据库 数据库
【MySQL】:DDL数据库定义与操作
【MySQL】:DDL数据库定义与操作
12 0
|
9天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之我需要在MaxCompute客户端添加Python第三方包,我该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
SQL 关系型数据库 MySQL
Python操作mysql数据库
Python操作mysql数据库
|
11天前
|
弹性计算 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之阿里函数计算中出现'python app.py'的错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
24 3
|
12天前
|
存储 人工智能 索引
Python中的嵌套字典访问与操作详解
Python中的嵌套字典访问与操作详解
21 1