Python操作MySQL数据库

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 今天分享一下Python操作MySQL数据库相关的知识点。安装必需品我这里安装的是 Python2.7MySQL5.6版本数据库连接MySQL-python-1.2.3.win-amd64-py2.7 这个版本的我在Sourceforge上面找了很久才找到,一定要注意是安装的32位还是64位.链接如下:终极链接层 测试一下打开命令行,若出现如下:Microsoft Windows [版本 6.1.7600]版权所有 (c) 2009 Microsoft Corporation。

今天分享一下Python操作MySQL数据库相关的知识点。


安装必需品


  • 我这里安装的是 Python2.7
  • MySQL5.6版本
  • 数据库连接MySQL-python-1.2.3.win-amd64-py2.7

这个版本的我在Sourceforge上面找了很久才找到,一定要注意是安装的32位还是64位.链接如下: 终极链接层

测试一下

打开命令行,若出现如下:

Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:40:30) [MSC v.1500 64 bit (
AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>

就说明安装好了。

如果是采取zip文件安装的话,需要cd到相关的目录,使用python setup.py install。来进行安装,当然也可以借助pip这款神器咯。

数据库准备

在MySQL中创建我们待会要进行测试的数据库。

Server version: 5.6.24-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hibernate          |
| mybatis            |
| mysql              |
| performance_schema |
| practice           |
| sakila             |
| test               |
| world              |
+--------------------+

mysql> create database python;
Query OK, 1 row affected (0.03 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hibernate          |
| mybatis            |
| mysql              |
| performance_schema |
| practice           |
| python             |
| sakila             |
| test               |
| world              |
+--------------------+

mysql> use python
Database changed

Python 代码测试

下面就借助一个简单的小例子来进行演示咯。

#coding:UTF-8

import MySQLdb

conn = MySQLdb.connect(
    host='localhost',
    port = 3306, # 切记这里是整数,而不是字符串!!!
    user = 'root',
    passwd = 'mysql',
    db = 'python',
)

curs = conn.cursor()
 # 创建一张数据库中的表
curs.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

 # 插入一条数据的记录
# curs.execute("insert into student values('2','Mark','Class 3','20')")

 # 修改查询条件的数据 (这条语句不知道为什么,我的控制台执行的时候出错了。欢迎批评指正)
# curs.execute("update student set class='Class 14' where name ='Mark'")

 # 删除查询条件的数据
# curs.execute("delete from student where age ='20'")

curs.close()
conn.commit()
conn.close()

下面分别来讲一讲每一个命令的具体的功能

// 创建一张名为student的表结构
 curs.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

// 查看数据库可见,那个db_test表是本人之前自己创建的

mysql> show tables;
+------------------+
| Tables_in_python |
+------------------+
| db_test          |
+------------------+
1 row in set (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_python |
+------------------+
| db_test          |
| student          |
+------------------+
2 rows in set (0.00 sec)

mysql>
curs.execute("insert into student values('2','Mark','Class 3','20')")


// 查看数据库结果
mysql> select * from student;
+------+------+---------+------+
| id   | name | class   | age  |
+------+------+---------+------+
|    2 | Mark | Class 3 | 20   |
+------+------+---------+------+
1 row in set (0.00 sec)
·
·
·
·
·
·

进阶版

使用纯的SQL语句进行操作,很是麻烦。类似于Java的PreparedStatement的方式,Python也有类似于占位符的形式来操作数据库。如下:

#coding=utf-8
import MySQLdb

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )
cur = conn.cursor()

#插入一条数据
sqli="insert into student values(%s,%s,%s,%s)"
cur.execute(sqli,('3','Huhu','2 year 1 class','7'))

#一次插入多条记录
sqli="insert into student values(%s,%s,%s,%s)"
cur.executemany(sqli,[
    ('3','Tom','1 year 1 class','6'),
    ('3','Jack','2 year 1 class','7'),
    ('3','Yaheng','2 year 2 class','7'),
    ])

# 获取表中的数据
cur.execute("select * from student")
cur.fetchone()

# fetchone()方法可以帮助我们获得表中的数据,可是每次执行cur.fetchone() 获得的数据都不一样,换句话说我没执行一次,游标会从表中的第一条数据移动到下一条数据的位置,所以,我再次执行的时候得到的是第二条数据。
# scroll(0,'absolute') 方法可以将游标定位到表中的第一条数据。



#获得表中有多少条数据
aa=cur.execute("select * from student")
print aa

#打印表中的多少数据
info = cur.fetchmany(aa)
for ii in info:
    print ii

cur.close()
conn.commit()
conn.close()
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL是关系型DB,依赖预定义的表格结构,适合结构化数据和复杂查询,但扩展性有限。NoSQL提供灵活的非结构化数据存储(如JSON),无统一查询语言,但能横向扩展,适用于大规模、高并发场景。选择取决于应用需求和扩展策略。
111 1
|
28天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含'Name'和'Age'列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
29天前
|
XML 关系型数据库 MySQL
python将word(doc或docx)的内容导入mysql数据库
用python先把doc文件转换成docx文件(这一步也可以不要后续会说明),然后读取docx的文件并另存为htm格式的文件(上一步可以直接把doc文件另存为htm),python根据bs4获取p标签里的内容,如果段落中有图片则保存图片。(图片在word文档中的位置可以很好的还原到生成的数据库内容) 我见网上有把docx压缩后解压获取图片的,然后根据在根据xml来读取图片的位置,我觉得比较繁琐。用docx模块读取段落的时候还需要是不是判断段落中有分页等,然而转成htm之后就不用判断那么多直接判断段落里的样式或者图片等就可以了。
21 1
|
16天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
19 0
|
11天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
15天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
29天前
|
SQL 关系型数据库 MySQL
python在mysql中插入或者更新null空值
这段代码是Python操作MySQL数据库的示例。它执行SQL查询从表`a_kuakao_school`中选取`id`,`university_id`和`grade`,当`university_id`大于0时按升序排列。然后遍历结果,根据`row[4]`的值决定`grade`是否为`NULL`。若不为空,`grade`被格式化为字符串;否则,设为`NULL`。接着构造UPDATE语句更新`university`表中对应`id`的`grade`值,并提交事务。重要的是,字符串`NULL`不应加引号,否则更新会失败。
19 2
|
5天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
28天前
|
机器学习/深度学习 数据采集 C++
【Python 基础教程 07】全面掌握Python3数字操作:入门到精通的实用指南
【Python 基础教程 07】全面掌握Python3数字操作:入门到精通的实用指南
84 2
|
28天前
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的