python连接mysql数据库

Python 操作 MySQL 数据库

Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。

Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFly,mSQL,MySQL,PostgreSQL,Microsoft SQL Server 2000等

不同的数据库你需要下载不同的DB API模块。

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

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

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

Python DB-API使用流程:

  • 引入 API 模块。
  • 获取与数据库的连接。
  • 执行SQL语句和存储过程。
  • 关闭数据库连接。

  安装

直接使用pip进行安装,在此之前需要安装一些系统依赖包。

  • CentOS
    yum install gcc python-devel mysql-devel zlib-devel openssl-devel
  • Ubuntu
    sudo apt-get install libmysqlclient-dev libmysqld-dev python-dev python-setuptools

安装完依赖,直接使用pip安装,MySQLdb模块的名字在pip上叫MySQL-python。

    pip install MySQL-python

    测试模块是否导入成功

 测试非常简单,检查MySQLdb 模块是否可以正常导入。

 在控制台书写

>>> import MySQLdb

没有报错提示MySQLdb模块找不到,说明安装OK 

连接数据库
#coding=utf-8
import MySQLdb
#这只是连接到了数据库,要想操作数据库需要创建游标。
conn= MySQLdb.connect(
        host=‘localhost‘,
        port = 3306,
        user=‘root‘,
        passwd=‘123456‘,
        db =‘test‘,
        )#通过获取到的数据库连接conn下的cursor()方法来创建游标。
cur = conn.cursor()

#创建数据表
#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

#插入一条数据
#cur.execute("insert into student values(‘2‘,‘Tom‘,‘3 year 2 class‘,‘9‘)")


#修改查询条件的数据
#cur.execute("update student set class=‘3 year 1 class‘ where name = ‘Tom‘")

#删除查询条件的数据
#cur.execute("delete from student where age=‘9‘")
#关闭游标
cur.close()#在向数据库插入一条数据时必须要有这个方法,否则数据不会被真正的插入
conn.commit()#关闭数据库连接
conn.close()

错误处理

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

Warning          当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。

ProgrammingError    程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。

NotSupportedError      不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。

Error          警告以外所有其他错误类。必须是 StandardError 的子类。

OperationalError       指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。

相关推荐