python如何使用数据库

Python014

python如何使用数据库,第1张

你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。

DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。

Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。

在 Python 语言环境下我们这样连接数据库。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是连接数据库的背后发生了什么呢?

答案

当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由 MySQL 协议 规定。MySQL 协议:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。

MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。

2. MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。

3. MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。

4. MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。

1.背景:

python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等。

打开链接 https://wiki.python.org/moin/DatabaseInterfaces

是python 关于数据库接口的一个总结 , 可以看到python支持的访问的数据库系统。

2.模块:

python 主要是通过模块和数据库连接的。

2.1 安装模块:

如果使用anconda,本身就会集合很多模块,不需要手动安装。如果用pycharm就要手动安装模块。

安装模块流程:

下载模块扩展包放到路径下——>cmd找到相应路径——>pip install +扩展包名字

下面列举一些常用连接数据库的模块:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi

不同模块连接的数据库不同, 支持的版本系统有的也不一样。但是大体用法都是相近的, 因为有DB-API

相关推荐:《Python教程》

3.Python DB-API

3.1背景:

在没有DB-API 之前, 不同数据库有不同的数据库接口程序, 这就导致python 访问 database 的接口程序非常混乱。如果我们学习了python 访问 mysql 的接口程序, 然后要切换到另一个数据库上, 我们还要在学习另外一个数据库的接口程序。python DB-API就是为了解决接口程序混乱而生成的。有了DB-API, 在不同数据库上移植代码就变得简单的多了。

3.2Python DB-API:

Python 定义了一套操作数据库的 DB-API 接口,它是一个规范,定义了一系列必须的对象和数据库存取方式,以便为不同的底层数据库系统提供一致的访问接口

这个链接就是python 官方给定的 DB-API 的说明 https://www.python.org/dev/peps/pep-0249/

3.3 Python DB--API的内容:

连接对象:

?Connect()创建连接:host/server /user/password/db connect方法生成一个connect对象, 我们通过这个对象来访问数据库。符合标准的模块都会实现connect方法。

?close():关闭连接

?commit():提交当前事务。做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到database中

?rollback() 回滚上一次调用 commit()以来对数据库所做的更改

?cursor():创建游标。系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。cursor游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意

游标对象:

?Execute()执行一个数据库查询或命令。 execute 执行sql 语句之后运行的结果不会直接output 出来 , 而是放到了一个缓存区, 要用 fetch语句+print 可以查询sql运行的结果

?fetchone ()得到结果集的下一行

?fetchmany(size)得到结果集的下几行

?fetchall()返回结果集中剩下的所有行

?rowcount 返回影响的行数

?Close()关闭游标对象

3.4Python DB--API的工作原理及流程:

如图所示如果把python 和数据库比作两个不同的地点, connection 就是路, 能连接python和database。cursor就像在路上行驶的小货车, 可以用于执行sql 语句, 以及存储sql 运行的结果。

流程:

4.MS SQL Server 示例:

4.1 导入模块、创建连接:

4.2 创建游标: 游标创建之后就可以对数据库进行查询更改了!

4.3对数据进行操作(创建表、插入行、更新数据、增加列、删除行、列、表):

4.4 查询 获取行:

5.其他:

使用游标的时候要注意, 每次连接只能有一个游标查询处于活跃状态。 code演示:

execute()循环和 executemany() 插入100000 条数据测速: