python使用mysql

分类: Python,SQL/NoSQL  • 发布时间: 2015-12-08 21:02:56  • 浏览量:14026

MySQL服务器以独立的进程运行,并通过网络对外服务,所以,Python需要MySQL驱动来连接到MySQL服务器。MySQL官方提供了mysql-connector-python驱动,但是安装的时候需要给pip命令加上参数--allow-external

pip install mysql-connector-python --allow-external mysql-connector-python

下面看一个简单的连接mysql,创建表和添加数据的小例子:

import mysql.connector
# host 默认是127.0.0.1
# port 默认即是3306
# charset 默认即是utf8
config = {'host': '192.168.99.189', 'user': 'my', 'password': '123456', 'port': 3306, 'database': 'pytest', 'charset': 'utf8'}
# 连接mysql
cn = mysql.connector.connect(**config)
# 创建游标对象
cursor = cn.cursor()
# 创建一个user表
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 插入两条数据 %s是占位符
cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
cursor.execute('insert into user (id, name) values ("2", "逗逼")')
print(cursor.rowcount)
# 执行查询
cursor.execute('select * from user where name = %s', ['Michael'])
# 接受返回行
L = cursor.fetchall()
print(L)
cursor.close()
cn.close()

从上面的例子可以看出,数据库的操作一般步骤为:

1.配置数据库连接信息

2.连接数据库,获取连接对象

3.使用连接对象获取一个游标对象(cursor对象)

4.使用cursor对象提供的方法执行SQL语句

5.关闭cursor对象

6.关闭连接对象

cursor用来执行命令的常用方法:

callproc(self, procname, args)

用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数

execute(self, query, args)

执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数

executemany(self, query, args)

执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数

nextset(self)

移动到下一个结果集

cursor用来接收返回值的常用方法:

fetchall(self)

接收全部的返回结果行.

fetchmany(self, size=None)

接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.

fetchone(self)

返回一条结果行.

scroll(self, value, mode='relative')

移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一 行移动value条.



补充:我们这里了解一下DB-API:

下面的文章来源:http://blog.sina.com.cn/s/blog_8a18c33d01019op8.html

由于数据库类型实在太多太杂,所以就出现了SGI小组,为不同的数据库提供一致的访问接口即DB-API,可以在不同数据库间快速移植代码。比如Python开发的MySQLdb遵从DB-API, 实现了connect(), connect.cursor()等方法...其他的db类也实现了同样的方法,故可以很容易移植。

DB-API规范的属性:

    apilevel DB-API 模块兼容的 DB-API 版本号

    threadsafety 线程安全级别

    paramstyle 该模块支持的 SQL 语句参数风格

DB-API规范的方法:

    connect() 连接函数,生成一个connect对象,以提供数据库操作,同时函数参数也是固定好的

其中connect对象又有如下方法:

# 所谓事务可以认为是一整套操作 只要有一处纰漏就废

close()关闭此connect对象, 关闭后无法再进行操作,除非再次创建连接
commit()提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚
rollback()取消当前事务
cursor()创建游标对象

其中cursor游标对象又有如下属性和方法:

常用方法:

close()
关闭此游标对象
fetchone()得到结果集的下一行
fetchmany([size = cursor.arraysize])得到结果集的下几行
fetchall()得到结果集中剩下的所有行
excute(sql[, args])执行一个SQL语句
excutemany(sql, args)执行多个数据库查询或命令

常用属性:

connection创建此游标对象的数据库连接
arraysize使用fetchmany()方法一次取出多少条记录,默认为1
lastrowid相当于PHP的last_inset_id()


文章标签: mysql, python, sql