MySQLdb使用

yosemite系统用brew安装mysql可以参考: http://segmentfault.com/a/1190000000438233

安装mysqldb: pip install mysql-python

简单例子

import MySQLdb as mdb
import sys

try:
    con = mdb.connect(‘localhost‘, ‘root‘, ‘password‘, ‘dbname‘)

    cur = con.cursor()
    cur.execute("select version()")
    ver = cur.fetchone()

except mdb.Error, e:
    print "error %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)

finally:
    if con:
        con.close()

数据库的操作很容易出现异常,最好用exception来处理,使用完后关闭连接con.close()

使用with可以简化代码,而且提供异常处理

con = mdb.connect(...)

with con:
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS Writers")
    cur.execute("CREATE TABLE Writers(Id INT PRIMARY KEY AUTO_INCREMENT,                  Name VARCHAR(25))")
    cur.execute("INSERT INTO Writers(Name) VALUES(‘Jack London‘)")
    cur.execute("INSERT INTO Writers(Name) VALUES(‘Honore de Balzac‘)")
    cur.execute("INSERT INTO Writers(Name) VALUES(‘Lion Feuchtwanger‘)")
    cur.execute("INSERT INTO Writers(Name) VALUES(‘Emile Zola‘)")
    cur.execute("INSERT INTO Writers(Name) VALUES(‘Truman Capote‘)")

查询数据

with con:
    cur = con.cursor()
    cur.execute("select * from Writers")
    rows = cur.fetchall()

    for row in rows:
        print row

with con:
    cur = con.cursor()
    cur.execute("select * from Writers")
    for i in range(cur.rowcount):
        row = cur.fetchone()
        print row[0], row[1]

上面是两种查询的方式,一种fetchall()获取整个表格,一种每次fetchone(), cur.fetchall()返回的rows是一个tuple,并且每个元素row也是一个tuple,里面有表格的一行数据

dict cursor

如果希望以字典的形式返回结果,可以用dict cursor

con = mdb.connect(...)

with con:
    cur = con.cursor(mdb.cursors.DictCursor)
    cur.execute("select * from Writers")

    rows = cur.fetchall()
    for row in rows:
        print row["id"], row["name"]

获取表格列名字

with con:
    cur = con.cursor()
    cur.execute("select * from Writers")

    desc = cur.description

print "%s %3s" % (desc[0][0], desc[1][0])

输出((‘Id‘, 3, 1, 11, 11, 0, 0), (‘Name‘, 253, 17, 75, 75, 0, 1))

print desc[0][0], desc[1][0]就可以得到列名

插入,读取图片

mysql提供了插入图片数据的方法,图片是二进制数据,mysql中提供一种特殊的数据类型来存放二进制数据,BLOB (binary large obj),包括TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB

def read_images():
    fin = open("togglebg.png")
    img = fin.read()
    return img

with con:
    cur = con.cursor()
    cur.execute("create table images(id int primary key, data mediumblob)")

    data = read_images()
    cur.execute("insert into images values(1, %s)", (data, ))
def read_images():
    fin = open("togglebg.png")
    img = fin.read()
    return img

def writeImages(data):
    fout = open(‘hello.jpg‘, ‘wb‘)
    with fout:
        fout.write(data)

with con:
    cur = con.cursor()
    cur.execute("select data from images where id = 1")
    data = cur.fetchone()[0]
    writeImages(data)

参考:http://zetcode.com/db/mysqlpython/

时间: 2025-01-04 15:06:08

MySQLdb使用的相关文章

Python2 - MySQL适配器 MySQLdb

本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMySQL. myconnpy.MySQL Connector 等,不过本篇要说的确是另外一个类库MySQLdb,MySQLdb 是用于Python链接Mysql数据库的接口,它

python MySQLdb在windows环境下的快速安装、问题解决方式

使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.net/wklken/article/details/7271019 ------------------------------------------------------------- 以下是windows环境下的: 1.      安装数据库mysql 下载地址:http://www.mysql.com/downloa

python的MYSQLdb模块在linux环境下的安装

开始学习python数据库编程后,在了解了基本概念,打算上手试验一下时,卡在了MYSQLdb包的安装上,折腾了半天才解决.记录一下我在linux中安装此包遇到的问题.系统是ubuntn15.04. 1.下载 第一个问题是pycharm软件的模块安装功能Project Interpreter无法自动下载安装MYSQLdb包,显示 Error occurred when installling package 那没办法了,只好手动下载了.MYSQLdb包linux系统的下载的地址是 http://s

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python

【mysql】MySQLdb中的事务处理

MySQL数据库有一个自动提交事务的概念,autocommit.含义是,如果开启autocommit, 则每一个语句执行后会自动提交.即一个语句视为一个事务. 在python使用的MySQLdb中,默认是不开启autocommit的.所以,只有在显示commit后,数据库操作才会真正提交.或者在rollback()后,回滚到上一次commit的状态. 例: #!/bin/env python #coding=utf-8 import MySQLdb class MYSQL(object): de

python MySQLdb 对mysql基本操作方法

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import MySQLdb 4 5 conn = MySQLdb.connect(host='192.168.1.101',user='root',passwd='123',db='host') 6 cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) 7 reCout = cur.execute('select ip,name f

Python MySQLdb

数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME. 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你可以可以自己设定或者直接使用root用户名及其密码,My

MySQLdb的安装与使用

一.安装 安装已编译版本号(此方法简便快捷): http://www.codegood.com/downloads 依据自己系统下载,双击安装,搞定 然后import MySQLdb.查看是否成功 我的,win7,32位,2.7版本号 MySQL-python-1.2.3.win-amd32-py2.7.exe 二.使用 #!/usr/bin/python # encoding: utf-8 import time,MySQLdb # 打开数据库连接 db = MySQLdb.connect("

Python的MySQLdb模块安装

在配置Django时,选择的是mysql数据库,要安装MySQLdb模块,不过安装过程中,遇到了很多errors,记录一下. 系统:ubuntu 11.10 mysql:直接apt-get安装的,version:5.1.62 到官方下载MySQL for Python 然后解压,打开README: 里面有安装过程: $ tar xfz MySQL-python-1.2.1.tar.gz $ cd MySQL-python-1.2.1 $ # edit site.cfg if necessary

Mysqldb连接Mysql数据库(转)

python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问Python数据库接口及API查看详细的支持数据库列表. 不同的数据库你需要下载