继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python3 MySQL 数据库连接

qq_遁去的一_1
关注TA
已关注
手记 198
粉丝 7
获赞 23

最近因为年底,连续两个项目要投产上线,又赶上公司年会,忙的要死,更新有些慢,见谅。今天要说一说python如何对mysql进行操作。在 Python3.x 版本中用于连接 MySQL 服务器的库与Python2中使用的mysqldb有所不同。本文我将为大家介绍 Python3 使用 PyMySQL库 连接数据库,并实现简单的增删改查。

1 PyMySQL介绍

PyMySql包含一个纯python的MySQL客户端库。PyMySQL的目标是成为MySQLdb的替代品,并在CPython、PyPy和IronPython上工作。

2 版本要求

python 下列之一

  • CPython >= 2.6 or >= 3.3

  • PyPy >= 4.0

  • IronPython 2.7

mysql 下列之一

  • MySQL >= 4.1 (tested with only 5.5~)

  • MariaDB >= 5.1


3 安装

直接pip方式安装:

# pip install PyMySQL


4 数据库增删改查

4.1 创建数据库testdb和表users

首先要先创建一个testdb 数据库,并且创建users表,创建语句如下:

MariaDB [(none)]> create database testdb;Query OK, 1 row affected (0.01 sec)MariaDB [(none)]> use testdb# 创建users表命令CREATE TABLE `users` (    `id` int(11) NOT NULL AUTO_INCREMENT,    `email` varchar(255) COLLATE utf8_bin NOT NULL,    `password` varchar(255) COLLATE utf8_bin NOT NULL,    PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_binAUTO_INCREMENT=1 ;

查看创建完的表结构:

MariaDB [testdb]> describe users;+----------+--------------+------+-----+---------+----------------+| Field    | Type         | Null | Key | Default | Extra          |+----------+--------------+------+-----+---------+----------------+| id       | int(11)      | NO   | PRI | NULL    | auto_increment || email    | varchar(255) | NO   |     | NULL    |                || password | varchar(255) | NO   |     | NULL    |                |+----------+--------------+------+-----+---------+----------------+3 rows in set (0.00 sec)

4.2 连接数据库

连接数据库之前要确认以下条件是否满足:

  • 已经创建了数据库 testdb;

  • 在testdb数据库中已经创建了users表;

  • 连接数据库TESTDB使用的用户名为 "testdb" ,密码为 "123456",你也可以自己设定用户名和密码;

  • 主要如果是远程连接阿里云等主机注意grant授权;

  • 已经安装了 Python MySQLdb 模块。

连接数据库并获取版本信息:

# -*- coding: utf-8 -*-# 导入模块import pymysql# 打开数据库连接db = pymysql.connect('localhost', 'testdb', '123456', 'testdb')# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# 使用execute()方法执行SQL查询cursor.execute("select version()")# 使用fetchone()获取单条数据data = cursor.fetchone()# 打印获取的内容print('Vsersion: %s'  % data)# 关闭连接db.close()

输出结果如下:

Version: 10.0.33-MariaDB

4.3 数据库插入

# -*- coding: utf-8 -*-# 导入模块import pymysql# 打开数据库连接db = pymysql.connect('localhost', 'testdb', '123456', 'testdb')# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# sql语句sql = "INSERT INTO users(email, password) VALUES ('123@qq.com', '123');"try:    # 执行sql语句    cursor.execute(sql)    # 提交到数据库    db.commit()    print('success')except:    # 如果出错执行回滚    db.rollback()    print('failed')# 关闭数据库连接db.close()


当然上面的插入代码也可以写成这样:

# -*- coding: utf-8 -*-# 导入模块import pymysql# 打开数据库连接db = pymysql.connect('localhost', 'testdb', '123456', 'testdb')# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# sql语句# 注意这里是与上面不同的地方sql = "INSERT INTO users(email, password) VALUES (%s, %s)";try:    # 执行sql语句        # 注意这里是与上面不同的地方    cursor.execute(sql, ('456@qq.com', '456'))    # 提交到数据库    db.commit()    print('success')except:    # 如果出错执行回滚    db.rollback()    print('failed')# 关闭数据库连接db.close()


4.4 数据库查询

# -*- coding: utf-8 -*-# 导入模块import pymysql# 打开数据库连接db = pymysql.connect('localhost', 'testdb', '123456', 'testdb')# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# sql语句sql = "select * from users;"try:    # 执行sql语句    cursor.execute(sql)        # 通过fetchall获取results对象并打印结果    results = cursor.fetchall()    for result in results:        print(result)except:    print('failed')# 关闭数据库连接db.close()

返回结果如下:

(1, '123@qq.com', '123')(2, '456@qq.com', '456')

4.5 数据库更新操作

# -*- coding: utf-8 -*-# 导入模块import pymysql# 打开数据库连接db = pymysql.connect('localhost', 'testdb', '123456', 'testdb')# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# sql语句sql = "update users set email = '1234@qq.com' where id = 1;"sql2 = 'select * from users;'try:    # 执行sql语句    cursor.execute(sql)    # 提交到数据库    db.commit()    cursor.execute(sql2)    # 获取数据结果    results = cursor.fetchall()    for result in results:        print(result)except:    # 如果出错执行回滚    db.rollback()    print('failed')# 关闭数据库连接db.close()

执行结果如下:

(1, '1234@qq.com', '123')(2, '456@qq.com', '456')

4.6 删除操作

# -*- coding: utf-8 -*-# 导入模块import pymysql# 打开数据库连接db = pymysql.connect('localhost', 'testdb', '123456', 'testdb')# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# sql语句sql = "delete from users where id = 1;"sql2 = "select * from users;"try:    # 执行sql语句    cursor.execute(sql)    # 提交到数据库    db.commit()    cursor.execute(sql2)    results = cursor.fetchall()    for result in results:        print(result)except:    # 如果出错执行回滚    db.rollback()    print('failed')# 关闭数据库连接db.close()

执行结果如下:

(2, '456@qq.com', '456')

5 总结

通过上面增删改查我们已经可以看出,其实python操作mysql并不复杂,主要步骤为连接数据库,建立游标对象,执行sql语句,获取结果,关闭连接。我们的重点还是要熟悉相关的sql语句,这样才能做到游刃有余。sql教程
中级篇就算结束了,后续会介绍高级篇框架相关知识,敬请关注。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP