PYTHON 访问MySQL数据库
要使用MySQL数据库,需先安装MySQL服务器。在服务器中创建数据库,然后通过客户端程序访问数据库。
本节主要讲述:
–下载安装MySQL –访问MySQL数据库实例 –连接MySQL服务器 –MySQL数据库操作 –MySQL表操作 –MySQL查询参数 –使用存储过程–使用事务
下载安装MySQL
•可从MySQL官方网站下载社区版,下载地址为:http://dev.mysql.com/downloads/mysql/
访问MySQL数据库实例
下面代码先创建一个MySQL数据库plandb,在数据库中创建一个表data,然后将7.2.9节中使用的plan.csv文件中的数据导入表data中。通过该实例,了解访问MySQL数据库的基本过程。
连接MySQL服务器
• 使用 Python 访问 MySQL 服务器或数据库时,都需要先建立连接,即创建 Python 的 SQL 接口的连接对象,所有数据库操作均通过连接完成 。
1.建立连接
• MySQL 连接器提供了两种方法来建立连接。 – 调用 mysql.connector.connect () 函数。 – 调用 mysql.connector.MySQLConnection () 类。• 例如:
>>> import mysql.connector
>>> cn1=mysql.connector.connect(host='localhost',
user='root',password='123456')
>>> cn2=mysql.connector.MySQLConnection(user='root',
password='123456',db='plandb')
2.关于当前数据库
• 如果在连接参数中指定了连接的数据库,则访问数据库对象(表、视图、存储过程等)时,默认为当前数据库的对象。要访问其他数据库的对象,则需要使用“数据库名 . ”作为限定词。例如,访问 plandb 数据库的 data 表时,可使用 plandb.data 。 • MySQL 连接器允许通过当前连接使用多个数据库,但只有一个当前数据库。可使用连接对象的 database 属性查看或设置当前数据库。
>>> cn1.database
>>> cn1.database='mysql'
3.测试连接是否可用
• 可使用连接对象的 ping() 或 is_connected () 方法来测试连接是否仍然可用。 – ping() 方法在连接可用时返回空值,连接不可用时发生 InterfaceError 异常。 – is_connected () 方法:在连接可用时返回 True ,连接不可用时返回 False 。
4.修改和重建连接
• 可通过连接对象修改连接参数,修改连接参数后需重建连接使修改生效。 – config () 方法:在建立连接后,用该方法修改连接参数配置,修改后,用 reconnect() 方法重建连接。 – cmd_change_user () 方法:可改变连接使用的用户名、密码、数据库和字符集。
5.关闭连接
• 访问完 MySQL 后,可使用下面的方法关闭连接。 – close() 方法:向 MySQL 服务器发送 QUIT 语句,关闭当前连接。 – disconnect() 方法:与 close() 方法相同。 – shutdown() 方法:不发送 QUIT ,直接关闭当前连接。
MySQL数据库操作
• 数据库基本操作包括: – 创建数据库 – 修改数据库 – 删除数据库
1.创建数据库 • MySQL 使用 create 语句来创建数据库,其基本格式为: – create{database | schema} [ if not exists] db_name [options] • 例如: – createdatabase test # 最简单的创建数据库命令 – createdatabase if not exists test2 # 避免创建同名数据库 2.修改数据库 • 可修改数据库的字符集或排序规则。修改数据库语句基本格式如下。 – alter{database| schema} character
set 字符集名称collate排序规则
• 例如: – >>> cn.cmd_query ('create database test ') – >>> cn.cmd_query ('alter database test character set gbk collate gbk_chinese_ci ') 3.删除数据库 • 删除数据库名称的语句基本格式如下。 – drop{database| schema} db_name • 例如: – >>> cn.cmd_query ('drop database test')MySQL表操作
• 建立连接后, MySQL 数据库中的表操作和 SQLite 数据库中的表操作类似。在下面的代码中,分别使用连接对象的 cmd_query () 方法操作表(创建表、修改表、添加记录、删除记录和执行查询等) • 各种表操作可以自行 在 IDLE 中测试
MySQL参数查询 • 在 Python 中执行 MySQL 查询时,使用 Python 风格的查询参数。可使用连接器的 paramstyle 属性查看参数格式。例如:
• pyformat 表示参数采用 Python 风格,即在 select 查询字符串中用“ %s ”表示参数,实际参数按先后顺序放在元组中。
使用存储过程 •存储过程是存储在服务器中的SQL语句集合,通过存储过程名称来访问,返回执行结果。下面的代码执行create procedure语句创建存储过程。 –>>>cur.execute('create procedure pp(n int) begin select n*n;select* from data where age > n; end ') •存储过程名称为pp,参数n为int类型。begin…end之间为存储过程代码,包含了两个select语句。 • 在 Python 中,使用游标对象的 callproc () 方法来执行存储过程。例如:
>>> cur.callproc('pp',(20,))
(20,)
• 执行存储过程时,返回传入的参数。存储过程中的返回数据,如查询结果等,则需使用游标对象的 stored_results () 方法来获取。 stored_results () 方法返回一个可迭代对象,迭代对象包含的每个元素为一个查询结集。
• 可以通过传出参数返回存储过程中的数据。例如:
>>> cur.execute('createprocedure doadd(in a int,in b int,out n int) beginset n := a + b; end ;')
>>> cur.callproc('doadd',(2,3,0))
(2, 3, 5)
• 存储过程 doadd 的参数 a 和 b 为传入参数, out 为传出参数。执行存储过程时, a 和 b 分别接收输入参数 2 和 3 。参数元组中的 0 用于为输出参数占位。 callproc () 返回的元组包含了传入参数和传出参数。使用事务
• 一个事务包含了一系列操作。事务最大的特点为原子性,即事务中的所有操作要么全部成功执行,要么全部无效。当事务中的某个操作失败时,会导致事务回滚,即撤销已执行的操作。 • 在 MySQL 中,与事务有关的语句如下。 – starttransaction 或 begin :开始一个事务。 – commit :语句之前的所有操作作为事务提交,使操作生效。 – rollback :回滚当前事务,撤销之前以执行的操作 • 有些操作是不能撤销的,如创建 / 删除数据库、创建 / 删除 / 修改表等各种数据定义语言( DDL )语句。下面的代码在系统命令行执行 mysql 命令使用事务。
• 在 Python 中访问 MySQL 服务器时,连接参数 autocommit 默认为 False ,即不会自动提交事务。在执行各种记录修改操作时,会自动开始一个事务,如果不执行 commit() 方法提交事务,中断连接后,所有修改操作均会失效。
• 在 MySQL 连接器中,连接对象的下列方法与事务相关。 – start_transaction () 方法:开始一个事务,也可向服务器发送一个 BEGIN 或 START TRANSACTION 语句来开始一个事物。 – rollback() :回滚事务。 – commit() 方法:提交当前事务。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
