博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python操作MySQL数据库
阅读量:7079 次
发布时间:2019-06-28

本文共 4013 字,大约阅读时间需要 13 分钟。

今天分享一下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>pythonPython 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)] on win32Type "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 itsaffiliates. Other names may be trademarks of their respectiveowners.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 pythonDatabase changed

Python 代码测试

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

#coding:UTF-8import MySQLdbconn = 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-8import MySQLdbconn= 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 iicur.close()conn.commit()conn.close()

转载地址:http://edjml.baihongyu.com/

你可能感兴趣的文章
每周算法讲堂,二分法
查看>>
2016第8周五
查看>>
CSS3文本溢出显示省略号
查看>>
zookeeper系列之通信模型(转)
查看>>
js动态判断密码强度&&实用的 jQuery 代码片段
查看>>
.Net开源SqlServer ORM框架SqlSugar整理
查看>>
JQuery在循环中绑定事件的问题详解
查看>>
SOCKS 5协议详解(转)
查看>>
用Inno Setup来解决.NetFramework安装问题 (转载)
查看>>
使用axis调用WebService服务端
查看>>
kubernetes入门(08)kubernetes单机版的安装和使用
查看>>
SonarQube代码质量管理平台 的安装、配置与使用
查看>>
docker~run起来之后执行多条命令
查看>>
Linux下通过受限bash创建指定权限的账号
查看>>
php:使用XHProf查找PHP性能瓶颈
查看>>
Ubuntu单用户模式(安全模式)
查看>>
Python之反射练习
查看>>
[MST] Describe Your Application Domain Using mobx-state-tree(MST) Models
查看>>
6. python 字符串格式化表达式
查看>>
【BIEE】11_BIEE图形报表在谷歌浏览器64.0.3282.140中访问图例乱码解决
查看>>