Python入门—— MySQL-python模块

MySQL-python模块

  • MySQLdb
    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。
    可以访问Python数据库接口及API查看详细的支持数据库列表。
    不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。
    DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。
    Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
    Python DB-API使用流程:
    • 引入 API 模块。
    • 获取与数据库的连接。
    • 执行SQL语句和存储过程。
    • 关闭数据库连接。
  • MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

1 进行MySQLdb 模块的安装(linux下)

  • 要进行MySQLdb 模块的安装,首先要确保你的电脑中有如下应用
    • Mysql 数据库(mariadb-server)
    • gcc(GNU Compiler Collection,GNU编译器套件)
    • ipython 一个交互式计算系统。主要包含三个组件:增加的交互式 “Python shell”,解耦的双过程通信模型,交互式并行计算的架构。支持变量自动补全。
  • 然后再进行MySQLdb的安装
    可通过访问http://sourceforge.net/projects/mysql-python,(Linux平台可以访问https://pypi.python.org/pypi/MySQL-python)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。
  • 或直接在 linux 超级用户下,在连接网络的情况下通过pip(pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。)命令进行安装
    执行如下命令,进行安装
    pip install MySQL-python
    然后再进行环境的安装通过yum命令进行安装
    yum install MySQL-python

数据库的相关操作,若是不了解,可移步Linux 下的 MariaDB 数据库管理系统进行了解

  • 通过已创建的数据库进行操作
    数据库名称为 python,中所含表单名称为 customer
    表单中所含项为 username passwd money

2 连接数据库

实例:

以下实例链接Mysql的 python 数据库:

  • Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
    • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
    • fetchall():接收全部的返回结果行.
 # 调用数据库模块
 import MySQLdb
 # 打开数据库,需要:
 # host 数据库主机的ip,若是 ip 无法成功,可尝试通过域名进行访问
 # user 对数据库进行操作的用户
 # passwd 登陆数据库的密码
 # db 所调用的数据库
 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()
 # 若是想要的到的数据是字典的格式,可加上以下限定
 # cur = db.cursor(cursorclass = MySQLdb.cursors.DictCursor) 

 # 使用execute 方法执行SQL语句
 cur.execute('show tables ')

 # 使用 fetchone() 方法获取一条数据
 # data = cur.fetchone()
 data2 = cur.fetchall()

 # 关闭数据库连接
 db.close()
 # print data
 print data2

执行如下:
这里写图片描述
控制台显示如下:
fetchone()的显示
这里写图片描述
fetchall()的显示
这里写图片描述

3 对数据库的内容进行操作

3.1 表单的添加删除与重命名

3.1.1 添加与删除

示例:对数据库中已存在的表单进行删除,并添加新表单

 # 调用数据库模块
 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单的删除
 cur.execute('DROP TABLE customer') 

 # 创建数据表SQL语句
 sql = 'CREATE TABLE consumer( id varchar(6) not null, ' \
                             'name varchar(8) not null)'
 # 执行sql语句
 cur.execute(sql)

 cur.execute('SHOW TABLES')
 data = cur.fetchall()

 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.1.2 表单的重命名

示例:

 # 调用数据库模块
 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单的重命名
 cur.execute('ALTER TABLE consumer RENAME newtable')

 cur.execute('SHOW TABLES')
 data = cur.fetchall()

 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.2 数据的插入

为表单进行数据的插入

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                     passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单的重命名
 cur.execute("INSERT INTO newtable(id,name) VALUES('3','JINX') ")

 cur.execute('SELECT * FROM newtable')
 data = cur.fetchall()
 # 进行请求发送,否则无法同步数据到真实数据库
 db.commit()
 cur.close()
 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

数据的批量插入

表单进行批量的数据添加

# 定义列表,将要添加的信息导入
insert = [
    ('4','ZED'),
    ('5','RIVEN'),
]
# 执行sql语句,对内容进行插入
cur.executemany("INSERT INTO newtable(id,name) values(%s,%s)",insert)

cur.execute('SELECT * FROM newtable')
data = cur.fetchall()

db.commit()
cur.close()
# 关闭数据库连接
db.close()
print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

为表单添加子段

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单进行字段添加
 cur.execute("ALTER TABLE newtable ADD age varchar(8)")

 cur.execute('DESC newtable')
 data = cur.fetchall()

 cur.close()

 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.3 数据的更新

对表单中字段的数据进行更新

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                     passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单中的数据进行更新
 cur.execute("UPDATE newtable SET age = '16' WHERE name = 'JINX'")

 cur.execute('SELECT * FROM newtable')
 data = cur.fetchall()

 db.commit()
 cur.close()
 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.4 数据的删除

对表单中字段的数据进行更新

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                     passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单中的数据进行删除
 cur.execute("DELETE FROM newtable WHERE name = 'Tim' ")

 cur.execute('SELECT * FROM newtable')
 data = cur.fetchall()

 db.commit()
 cur.close()
 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

4 错误处理

DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

异常描述
Warning当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。
Error警告以外所有其他错误类。必须是 StandardError 的子类。
InterfaceError当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。
DatabaseError和数据库有关的错误发生时触发。 必须是Error的子类。
DataError当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。
OperationalError指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。
IntegrityError完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
InternalError数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。
ProgrammingError程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。
NotSupportedError不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值