美文网首页python学习
Python操作MySQL数据库9个实用实例

Python操作MySQL数据库9个实用实例

作者: 寒剑飘零 | 来源:发表于2017-09-24 03:18 被阅读23次

在Windows平台上安装mysql模块用于Python开发
用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示。下边是打包了32与64版本。
MySQL-python-1.2.3.win32-py2.7.exe
MySQL-python-1.2.3.win-amd64-py2.7.exe

实例 1、取得 MYSQL 的版本

import MySQLdb as mdb
con = None
try:
con = mdb.connect('localhost', 'root','root', 'test');
cur = con.cursor()
cur.execute("SELECT VERSION()")
data = cur.fetchone()
print "Database version : %s " % data
finally:
if con:
#无论如何,连接记得关闭
con.close()

实例 2、创建一个表并且插入数据

import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test');
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS
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')")

实例 3、 python 使用 slect 获取 mysql 的数据并遍历

import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test');
with con:
cur = con.cursor()
cur.execute("SELECT * FROM Writers")
rows = cur.fetchall()
for row in rows:
print row

运行结果:
(1L, ‘Jack London')
(2L, ‘Honore de Balzac')
(3L, ‘Lion Feuchtwanger')
(4L, ‘Emile Zola')
(5L, ‘Truman Capote')

上面的代码,用来将所有的结果取出,不过打印的时候是每行一个元祖打印,现在我们使用方法,取出其中的单个数据:

import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test');
with con:
cur = con.cursor()
cur.execute("SELECT * FROM Writers")
numrows = int(cur.rowcount)
for i in range(numrows):
row = cur.fetchone()
print row[0], row[1]

运行结果:
1 Jack London
2 Honore de Balzac
3 Lion Feuchtwanger
4 Emile Zola
5 Truman Capote

实例 4、使用字典 cursor 取得结果集(可以使用表字段名字访问值)

import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test')
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"])

实例 5、获取单个表的字段名和信息的方法

import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test')
with con:
cur = con.cursor()
cur.execute("SELECT * FROM Writers")
rows = cur.fetchall()
desc = cur.description
print 'cur.description:',desc
print "%s %3s" % (desc[0][0], desc[1][0])
for row in rows:
print "%2s %3s" % row

运行结果:
cur.description: ((‘Id', 3, 1, 11, 11, 0, 0), (‘Name', 253, 17, 25, 25, 0, 1))
Id Name
1 Jack London
2 Honore de Balzac
3 Lion Feuchtwanger
4 Emile Zola
5 Truman Capote

实例 6、使用 Prepared statements 执行查询(更安全方便)

?
import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test')
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
结果:
Number of rows updated: 1

实例 7、把图片用二进制存入 MYSQL

有人喜欢把图片存入 MYSQL(这种做法貌似很少吧),我看大部分的程序,图片都是存放在服务器上的文件,数据库中存的只是图片的地址而已,不过 MYSQL 是支持把图片存入数据库的,也相应的有一个专门的字段 BLOB (Binary Large Object),即较大的二进制对象字段,请看如下程序,注意测试图片自己随便找一个,地址要正确:
首先,在数据库中创建一个表,用于存放图片:
复制代码代码如下:
CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);
然后运行如下 PYTHON 代码进行:

import MySQLdb as mdb
import sys
try:
fin = open("../web.jpg")
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='root',passwd='root',
db='test')
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)

实例 8、从数据库中把图片读出来

import MySQLdb as mdb
import sys

try:

conn = mdb.connect('localhost', 'root', 'root', 'test');
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)

实例 9、使用 Transaction 即事务(手动提交,自动回滚)

import MySQLdb as mdb
import sys
try:
conn = mdb.connect('localhost', 'root', 'root', 'test');
cursor = conn.cursor()
cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",
("Leo Tolstoy", "1"))
cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",
("Boris Pasternak", "2"))
cursor.execute("UPDATE Writer SET Name = %s WHERE Id = %s",
("Leonid Leonov", "3"))
conn.commit()
cursor.close()
conn.close()
except mdb.Error, e:
conn.rollback()
print "Error %d: %s" % (e.args[0],e.args[1])

结果:

1、因为不存在 writer 表( SQL 第三条语句),所以出现错误:Error 1146: Table ‘test.writer' doesn't exist
2、出现错误,出发异常处理, 3 条语句的前两条会自动变成了没有执行,结果不变
3、如果本代码放到一个 MyISAM 引擎表,前两句会执行,第三句不会;如果是 INNDB 引擎,则都不会执行。

相关文章

  • 数据库多实例

    数据库的基本操作都是基于单实例的,mysql多实例在实际生产环境也是非常实用的。 多实例主要作用是:充分...

  • Python操作MySQL

    Python操作MySQL 一. python操作数据库介绍 Python 标准数据库接口为 Python DB-...

  • python对mysql的操作

    python对mysql的操作 Mysql 常见操作 数据库操作 PS:用户权限相关数据保存在mysql数据库的u...

  • python-操作mysql

    python操作mysql实例: 1,创建数据库链接:建立通道,保持连接,就像http三次握手建立通道。 2,游标...

  • Python学习笔记 -操作MySql数据库

    Python 操作MySql数据库 '''Python操作数据库步骤引入 API 模块。如(import MyS...

  • Python操作MySQL数据库9个实用实例

    在Windows平台上安装mysql模块用于Python开发用python连接mysql的时候,需要用的安装版本,...

  • 00-基本操作

    数据库的基本操作 通过mysql客户端进入mysql后,实际位于所有仓库之外:* 选中要操作的数据库实例* 操作数...

  • 继续MySQL学习心得

    MySQL与Python 用Python操作MySQL数据库,那必安装pymysql sudo pip3 inst...

  • python 教程笔记day10

    Python3 MySQL 数据库连接 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 ...

  • PyMySQL in Django

    使用PyMySQL操作mysql数据库 适用环境 python版本 >=2.6或3.3 mysql版本>=4.1 ...

网友评论

    本文标题:Python操作MySQL数据库9个实用实例

    本文链接:https://www.haomeiwen.com/subject/bunhextx.html