Python其实是可以操纵数据库的,想想如果能在python里写SQL语句,从而直接达到操纵数据库的目的,how cool!

Python的标准数据库接口为Python DB-API,针对不同的数据库要安装不同的模块,其中,MySQLdb就是用于链接MySQL数据库的接口。

安装MySQLdb,可以在 http://sourceforge.net/projects/mysql-python 上找到安装包,下载安装即可,无需多余的设置。

使用流程大致如下:

  1. 导入MySQLdb模块
  2. 获取与数据库的连接
  3. 执行SQL语句,同时刷新数据库
  4. 关闭数据库连接

接下里分开记录数据库连接、创建数据库表、数据库插入操作、查询操作、更新操作、删除操作和错误处理

  1. 数据库连接

    # 导入模块

    import MySQLdb

    # 数据库连接

    db = MySQLdb.connect(host= "localhost", user='****', passwd='****', db='****')

数据库连接比较简单,格式也都是固定的,注意在连接前,确保用户拥有操纵某个数据库的权限

  1. 创建数据库表

    # -*- coding:utf-8 -*-

    import MySQLdb

    db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb')

    # 获取游标

    cursor = db.cursor()

    # cursor的execute方法可以执行SQL

    # 如果表EMPLOYEE存在则删除

    cursor.execute('DROP TABLE IF EXISTS EMPLOYEE')

    sql = 'CREATE TABLE EMPLOYEE(\

    NAME VARCHAR(10) PRIMARY KEY,\

    AGE INT,\

    SEX VARCHAR(1))'

    cursor.execute(sql)

    # 关闭游标

    cursor.close()

    # 关闭数据库连接

    db.close()

    在powershell中查看:

    没有问题!

  2. 数据库插入操作

    # -*- coding:utf-8 -*-

    import MySQLdb

    db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb')

    # 获取游标

    cursor = db.cursor()

    # 插入一条记录

    sql = "INSERT INTO EMPLOYEE(NAME, AGE, SEX) VALUES ('Simon', 20, 'M')"

    try:

    cursor.execute(sql)

    # 一定要commit()一下数据库才会被更新

    db.commit()

    except:

    db.rollback()

    # 插入多条记录

    values = [('Lucy', 21, 'W'), ('Tom', 19, 'M')]

    # 必须是%s,且没有引号,%d是不行的

    sql = "INSERT INTO EMPLOYEE(NAME, AGE, SEX) VALUES (%s, %s, %s)"

    try:

    cursor.executemany(sql, values)

    db.commit()

    except:

    db.rollback()

    # 关闭游标

    cursor.close()

    # 关闭数据库连接

    db.close()

    结果如下:

  3. 数据库查询操作

    # -*- coding:utf-8 -*-

    import MySQLdb

    db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb')

    # 获取游标

    cursor = db.cursor()

    # SQL查询语句

    sql = "SELECT * FROM EMPLOYEE WHERE AGE >= '%d'" % (20)

    try:

    cursor.execute(sql)

    # 获取所有记录

    rows = cursor.fetchall()

    for row in rows:

    print 'Name:', row[0], 'Age:', row[1], 'Sex:', row[2]

    except:

    print 'Error, return nothing.'

    # 关闭游标

    cursor.close()

    # 关闭数据库连接

    db.close()

    结果如下:

    Cursor还有两个方法,fetchone()和fetchmany(size=)

    fetchmany(size=)比较简单,可以控制返回的行数

    fetchone()的意义在于逐行获取,因为每使用一次fetch,游标的位置就会发生改变,结果也看得出来,不过这也正是游标的意义所在了

  4. 数据库更新操作

    # -*- coding:utf-8 -*-

    import MySQLdb

    db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb')

    # 获取游标

    cursor = db.cursor()

    # SQL更新语句

    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE AGE >= '%d'" % (20)

    try:

    cursor.execute(sql)

    db.commit()

    except:

    db.rollback()

    # 关闭游标

    cursor.close()

    # 关闭数据库连接

    db.close()

    数据库更新操作还是比较简单,注意别忘了db.commit()

  5. 数据库删除操作

    # -*- coding:utf-8 -*-

    import MySQLdb

    db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb')

    # 获取游标

    cursor = db.cursor()

    # SQL删除语句

    sql = "DELETE FROM EMPLOYEE WHERE AGE < '%d'" % (20)

    try:

    cursor.execute(sql)

    db.commit()

    except:

    db.rollback()

    # 关闭游标

    cursor.close()

    # 关闭数据库连接

    db.close()

    比较简单,不多说

    总结:MySQLdb的语法还是比较简单的,步骤也很单一,除了SQL不同之外,整体框架大体上没有发生太大的改变。还是那句话,SQL是根本,只有掌握好SQL才能执行更为复杂的操作。

    其实MySQLdb的语法远不止这些,不过这些就已经够用,如果想深入学习,可以参考官方网站http://dev.mysql.com/doc/connector-python/en/

    参考资料:http://www.runoob.com/python/python-mysql.html

                   http://www.cnblogs.com/coser/archive/2012/01/12/2320741.html

                   http://blog.csdn.net/lengyue318/article/details/7913427

转载于:https://www.cnblogs.com/lucifer25/p/5782007.html

Python+MySQL学习笔记(一)相关推荐

  1. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  2. python自动化测试学习笔记合集二

    python自动化测试学习笔记-4内置函数,处理json 函数.全局变量 写代码时注意的几点事项: 1.一般写代码的时候尽量少用或不用全局变量,首先全局变量不安全,大家协作的情况下,代码公用容易被篡改 ...

  3. python自动化测试学习笔记合集三

    上次我们学到了redis的一些操作,下面来实际运用以下. 这里我们先来学习一下什么是cookie和session. 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候,这个 ...

  4. 实用篇 | MySQL 学习笔记

    实用篇 | MySQL 学习笔记 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management S ...

  5. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作 #创建 #数据库的创建 USE mysql; CREATE DATABASE db_x; #删除 #删除数据库 DROP DA ...

  6. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  7. python 正则学习笔记

    python 正则学习笔记 官方document #1.0 import re m=re.search('(?<=abc)def','cxabcdefgb')print(m.group(0))# ...

  8. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  9. MySQL学习笔记07【事务、用户管理和权限管理】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

最新文章

  1. php7 获取文件类型,太简单了!PHP获取文件扩展名的7中方法
  2. Windows Phone 7实现图片数据绑定
  3. (12)FPGA时钟设计原则
  4. 求助:字符的显示问题
  5. C++中数组、链表list、容器map/vector的区别
  6. Linux V4L2驱动框架分析之(一):架构介绍
  7. 基于MiniC的语义分析(使用javacc)
  8. 零基础入门学习Python4
  9. 如何防御ddos攻击?
  10. 休眠后电脑马上自动唤醒解决
  11. 《Python神经网络编程(Make Your Own Neural Network)》读书笔记
  12. matlab编程勒让德多项式展开例题解析,第19 勒让德多项式 球函数习题及解答
  13. 十张图深度剖析供应链金融业务模式
  14. 计算机组成原理实验一:全加器实验
  15. 《用户体验设计:100堂入门课》20190920
  16. 打开新世界的大门。。吧?
  17. (鸟哥linux私房菜)windos7+centos7.6+U盘安装+安装电脑一个硬盘上。
  18. 2020-02-28-E-prime主要常见问题及matlab、python打marker方式
  19. 《UNIX 环境高级编程》学习笔记—— 标准I/O库
  20. 计算机桌面便签 怎么弄,怎样设置电脑浮动桌面便签

热门文章

  1. JZOJ 5484. 【清华集训2017模拟11.26】快乐树
  2. 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?
  3. mysql事务服务_MySQL (事务篇)
  4. java lock 对象_Java并发编程锁系列之ReentrantLock对象总结
  5. 系统优化方法与智能优化算法
  6. 文本分类入门(十一)特征选择方法之信息增益
  7. 个人常用word技巧----平时编辑word能快不少~
  8. 360企业安全2019暑期实习算法岗笔试
  9. 2017年10月21日普及组 简单单词
  10. JZOJ__Day 9:【普及模拟】Square