MySQLdb使用
2015-05-30 23:53
666 查看
yosemite系统用
安装mysqldb:
数据库的操作很容易出现异常,最好用exception来处理,使用完后关闭连接con.close()
使用with可以简化代码,而且提供异常处理
上面是两种查询的方式,一种fetchall()获取整个表格,一种每次fetchone(), cur.fetchall()返回的rows是一个tuple,并且每个元素row也是一个tuple,里面有表格的一行数据
输出(('Id', 3, 1, 11, 11, 0, 0), ('Name', 253, 17, 75, 75, 0, 1))
print desc[0][0], desc[1][0]就可以得到列名
参考:http://zetcode.com/db/mysqlpython/
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 cursorcon = 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/
相关文章推荐
- (2)mysql优化之使用索引优化查询
- MySql中的字符数据类型
- MySQL 水平拆分(读书笔记整理)
- mysql退出与登录2
- sql学习笔记(15)-----------MySQL 索引与优化总结
- ubantu下修改mysql默认编码格式为utf8编码
- MySQL主从复制几个重要的启动选项
- mysql登陆与退出
- mysql> create database db; ERROR 1006 (HY000): Can't create database 'db' (errno: 2)
- ubantu下如何完全彻底卸载mysql
- 转!!!Mysql无法创建外键的原因
- mysql列出要杀掉的进程
- mysql注意事项
- 【mysql的设计与优化专题(5)】慢查询详解
- 查看mysql表结构和表创建语句的方法
- mysql 事务隔离级别
- lib_mysqludf_json 把mysql关系型数据转换成json格式的UDF工具
- 使用otl,报错:mysql Commands out of sync; you can't run this command now
- mysql 存储过程中limit
- MySQL数据库索引的设计原则