MYSQL Python 入门教程
2013-10-23 20:56
323 查看
MYSQL Python 入门教程
参考出处:http://www.cnblogs.com/sherlockhua/archive/2012/03/29/2423786.htmlhttp://blog.csdn.net/kongxx/article/details/7094018
1.安装MySQLdb模块。
先在ubuntu下安装:sudo apt-get install python-mysqldb接着为eclipse配置一下。过程为:windows->preference->pydev->interpreter-python,在Forced Builtins下面手动添加MySQLdb字段,强制编译。
2.创建一个数据库,并且创建一个测试用户。
用命令mysql -u root -p password进入mysql数据库系统。然后create database xxxx;创建一个数据库。最后创建一个测试用户,并给予相应的权限。mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye
3.打印MySQL数据库版本。
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys con = None try: con = mdb.connect('localhost', 'testuser', 'test623', 'testdb'); cur = con.cursor() cur.execute("SELECT VERSION()") data = cur.fetchone() print "Database version : %s " % data except mdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) finally: if con: con.close()
4.数据库建表和插入操作
import MySQLdb conn = MySQLdb.connect (host = "172.17.23.121", user = "fkong", passwd = "fkong", db = "fkong") cursor = conn.cursor () cursor.execute (""" CREATE TABLE TEST ( ID INT, COL1 VARCHAR(40), COL2 VARCHAR(40), COL3 VARCHAR(40) ) """) cursor.execute (""" INSERT INTO TEST (ID, COL1, COL2, COL3) VALUES (1, 'a', 'b', 'c'), (2, 'aa', 'bb', 'cc'), (3, 'aaa', 'bbb', 'ccc') """) conn.commit() cursor.close () conn.close ()
5.查询。查询通常有两种方式:一种是使用cursor.fetchall()获取所有查询结果,然后再一行一行的迭代;另一种每次通过cursor.fetchone()获取一条记录,直到获取的结果为空为止。
import MySQLdb conn = MySQLdb.connect (host = "172.17.23.121", user = "fkong", passwd = "fkong", db = "fkong") cursor = conn.cursor () cursor.execute ("SELECT * FROM TEST") rows = cursor.fetchall() for row in rows: print "%d, %s, %s, %s" % (row[0], row[1], row[2], row[3]) print "Number of rows returned: %d" % cursor.rowcount cursor.execute ("SELECT * FROM TEST") while (True): row = cursor.fetchone() if row == None: break print "%d, %s, %s, %s" % (row[0], row[1], row[2], row[3]) print "Number of rows returned: %d" % cursor.rowcount cursor.close () conn.close ()
6.字典游标
Mysqldb模块中有很多种游标类型,默认的游标以元组的元组方式返回数据。当我们使用字典游标时,数据将以python中字典形式返回。这样,我们就可以使用列名来引用数据了#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys con = mdb.connect('localhost', 'testuser', 'test623', 'testdb') with con: cur = con.cursor(mdb.cursors.DictCursor) cur.execute("SELECT * FROM Writers") rows = cur.fetchall() for row in rows: print "%s %s" % (row["Id"], row["Name"])
7.列名
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys con = mdb.connect('localhost', 'testuser', 'test623', 'testdb') with con: cur = con.cursor() cur.execute("SELECT * FROM Writers") rows = cur.fetchall() desc = cur.description print "%s %3s" % (desc[0][0], desc[1][0]) for row in rows: print "%2s %3s" % row
8.格式化语句
Python的Mysql DB接口支持5中不同的格式化方式,但MysqlDB模块只支持其中的一种,即ANSI的printf格式化方式。#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys con = mdb.connect('localhost', 'testuser', 'test623', 'testdb') with con: cur = con.cursor() cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s", ("Guy de Maupasant", "4")) print "Number of rows updated: %d" % cur.rowcount
9.插入图片
有人喜欢使用mysql来存储图片,而有的人喜欢把图片存储在文件系统中。而当我们要处理成千上万的图片时,会引起技术问题。图片时二进制数据,mysql有种特殊的数据类型,用来存储二进制数据,叫做BLOB(Binary Large Ojbect)。开始之前,我们创建一个images表用来存储图片数据,代码如下:
mysql> CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);
Query OK, 0 rows affected (0.06 sec)
接着,我们读取图片数据,并把它插入到数据库中。
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys try: fin = open("chrome.png") img = fin.read() fin.close() except IOError, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) try: conn = mdb.connect(host='localhost',user='testuser', passwd='test623', db='testdb') cursor = conn.cursor() cursor.execute("INSERT INTO Images SET Data='%s'" % \ mdb.escape_string(img)) conn.commit() cursor.close() conn.close() except mdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1)
10.读取图片
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys try: conn = mdb.connect(host='localhost',user='testuser', passwd='test623', db='testdb') cursor = conn.cursor() cursor.execute("SELECT Data FROM Images LIMIT 1") fout = open('image.png','wb') fout.write(cursor.fetchone()[0]) fout.close() cursor.close() conn.close() except IOError, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1)
11.事务支持
事务是数据库中的原子操作,不管要操作的数据在一个或者多个数据中。事务中的所有sql语句的结果要么全部提交,要么全部回滚。对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。Commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。
Mysq数据库有不同的存储引擎,其中最知名的引擎是MyISAM和 InnoDb引擎。MyISAM是Mysql的默认引擎。这是在数据安全和性能之前寻求一个平衡。MysqlISAM引擎的表处理性能很高,但是不支持事务。而InnoDB引擎在数据丢失方面更安全,因为它支持事务,但是相应的表处理比较慢。
相关文章推荐
- MYSQL Python 入门教程
- MYSQL Python 入门教程
- MYSQL Python 入门教程
- 简洁的十分钟Python入门教程
- Python基础教程系列目录,最全的Python入门系列教程!
- python入门(八):连接mysql和STMP
- Python入门基础教程 用Eclipse编写Python程序
- Python入门教程-10 字典dictionary
- MySQL 5.0入门简易教程(图)
- mysql零基础入门视频教程免费分享!很简单
- Python爬虫教程——入门三之Urllib库的基本使用
- Python 3.2 入门教程
- python入门基础教程02 Python简介
- Python入门教程 超详细1小时学会Python
- Python Twisted 学习系列3(转载stulife最棒的Twisted入门教程)
- Python Twisted 学习系列19(转载stulife最棒的Twisted入门教程)
- 30分钟带你快速入门MySQL教程
- Python_Scrapy入门教程(2)
- 学python入门基础教程[推荐]
- 一篇不错的Python入门教程