文档章节

Python操作MySQL数据库

人间四月
 人间四月
发布于 2015/12/05 16:22
字数 922
阅读 24
收藏 0

Python DB API

  • PythonDB API:Python访问数据库的同一接口规范:

  • http://www.python.org/dev/peps/pep-0249

  • PythonDB API包含的内容

    • 数据库连接对象:connection

    • 数据库交互对象:cursor

    • 数据库异常类:exceptions

  • 使用Python DB API访问数据库流程

    1. 开始

    2. 创建connection

    3. 获取cursor

    4. 增删改查

    5. 关闭cursor

    6. 关闭connections

    7. 结束


Python MySQl开发环境

MySQL-python

这里注意:尝试安装多次出错

windows解决方案:easy_install MySQL-python    或者     pip install MySQL-python
Linux解决方案:apt-get install python-dev    或者     yum install python-devel

python3 可以安装使用pymysql,此处留坑:

参考文献:https://wiki.openstack.org/wiki/PyMySQL_evaluation



DB API-数据库连接对象-connectios

  • 连接对象:建立python客户端与数据库的网络连接

  • 创建方法:MySQLdb.Connect(参数)

conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='dbname')
    #    参数类型说明
    #    host:字符串,MySQL服务器地址
    #    port:数字,MySQL服务器端口号
    #    user:字符串,用户名
    #    passwd:
    #    db:字符串,数据库名称
    #    chaset:连接编码,中文用UTF-8

  • connections支持方法:

    • cursor()使用该连接创建并返回游标

    • commit()提交当前事物

    • rollback()回滚当前事物

    • close()关闭连接



DB API-数据库游标对象 cursor

  • 游标对象:用于执行查询和获取结果

  • cursor对象支持的方法:

    • execute(op[,args])    执行一个数据库查询和命令 ,将结果从数据库获取到客户端   select,update,insert    

    • fetchone()    取得结果集的下一行    featch*方法:移动rownumber(类似于数组下标),返回数据

    • fetchmany(size)    获取结果集的下几行

    • fetchall()    获取结果集的剩下的所有行

    • rowcount    最近一次execute返回去数据的行数或影响行数

    • close()    关闭游标对象



示例代码:

#-*- encoding: utf8-*-
import os, sys, string
import MySQLdb

# 连接数据库 
try:
    conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')
except Exception, e:
    print e
    sys.exit()

# 获取cursor对象来进行操作

cursor = conn.cursor()
# 创建表
sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"
cursor.execute(sql)
# 插入数据
sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)
try:
    cursor.execute(sql)
except Exception, e:
    print e

sql = "insert into test1(name, age) values ('%s', %d)" % ("张三", 21)
try:
    cursor.execute(sql)
except Exception, e:
    print e
# 插入多条

sql = "insert into test1(name, age) values (%s, %s)" 
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
    cursor.executemany(sql, val)
except Exception, e:
    print e

#查询出数据
sql = "select * from test1"
cursor.execute(sql)
alldata = cursor.fetchall()
# 如果有数据返回,就循环输出, alldata是有个二维的列表
if alldata:
    for rec in alldata:
        print rec[0], rec[1]


cursor.close()

conn.close()


下面贴一下常用的函数:

然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚

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条.


© 著作权归作者所有

上一篇: python 操作xls
下一篇: JavaScript变量
人间四月
粉丝 2
博文 74
码字总数 30455
作品 0
朝阳
程序员
私信 提问
Python操作Mysql

首先,安装需要的环境,Mysql和Python就不说了,必备的东西。 主要是安装的MySQLdb,可以去sf.net下载,具体地址是http://sourceforge.net/projects/mysql-python/ 如果用Ubuntu,直接 sudo...

durban
2012/05/25
192
2
python MySQLdb安装和使用

MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb: 首先要下载下载:请到官方网站http://sourceforge.net/projects/mysql-python/或者点击链接下载http://downloads.sour...

我的去哈哈
2014/03/28
29.6K
2
Mac 之xampp 安装MySQLdb【非Pip安装】

刚学习python,到数据库这块,需要安装一个MySQLdb。记录下碰到的问题~~~ 我的环境:Mac High Sierra 10.13.6 + python 2.7 + XAMPP。 特此说明:以下安装只针对本机以及本人碰到的问题,不一...

干干
2018/09/10
84
0
Python学习日记六(Python连接MySql)

一.准备工作(下载MySQL-python和python安装包 ) Python需要连接mysql,需要下载Python MySQLdb模块,这里提供几个链接地址: MySQL-python官网下载地址 :https://pypi.python.org/pypi/My...

HaleyLiu
2018/04/12
0
0
ImportError: No module named MySQLdb

ImportError: No module named MySQLdb 该错误是源于我们没有安装Python连接MySQL所需的MySQLdb库而引起。 MySQL是最流行的开源数据库之一,但在Python标准库中并没有集成MySQL接口程序,MyS...

netmouse
2014/10/17
112
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt程序打包发布方法(使用官方提供的windeployqt工具)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/toTheUnknown/article/details/81748179 如果使用到了Qt ...

shzwork
26分钟前
4
0
MainThreadSupport

MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface ...

马湖村第九后羿
46分钟前
3
0
指定要使用的形状来代替文字的显示

控制手机键盘弹出的功能只能在ios上实现,安卓是实现不了的,所以安卓只能使用type类型来控制键盘类型,例如你要弹出数字键盘就使用type="number",如果要弹出电话键盘就使用type="tel",但这...

前端老手
56分钟前
6
0
总结:Raft协议

一、Raft协议是什么? 分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。 二、Raft的日志广播过程 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。 Followers收...

浮躁的码农
今天
7
0
Flask-admin Model View字段介绍

Model View字段介绍 can_create = True 是否可以创建can_edit = True 是否可以编辑can_delete = True 是否可以删除list_template = 'admin/model/list.html' 修改显......

dillonxiao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部