Changkun's Blog欧长坤的博客

Science and art, life in between.科学与艺术,生活在其间。

  • Home首页
  • Ideas想法
  • Posts文章
  • Tags标签
  • Bio关于
  • TOC目录
  • Overview概览
Changkun Ou

Changkun Ou

Human-AI interaction researcher, engineer, and writer.人机交互研究者、工程师、写作者。

Bridging HCI, AI, and systems programming. Building intelligent human-in-the-loop optimization systems. Informed by psychology, sociology, cognitive science, and philosophy.连接人机交互、AI 与系统编程。构建智能的人在环优化系统。融合心理学、社会学、认知科学与哲学。

Science and art, life in between.科学与艺术,生活在其间。

276 Blogs博客
165 Tags标签
  • 包含MySQLdb库
  • 与MySQL建立连接
  • 运行SQL语句并接受返回值
  • 关闭数据库连接
Changkun's Blog欧长坤的博客

Python-MySQLdb 教程

Published at发布于:: 2014-11-06   |   Reading阅读:: 2 min   |   PV/UV: /

Python操作MySQL,一个常用的方案就是使用MySQLdb库,安装在之前的日志已经介绍过了: Mac下新安装的MySQL无法登陆root用户解决方法

下面我们来看看如何使用Python操作MySQL,基本逻辑分为四个步骤。

包含MySQLdb库

1
import MySQLdb

与MySQL建立连接

1
conn = MySQLdb.connet(host='localhost', user='root';, passwd='root", db = 'euryugasaki', port=3306)

connect()方法用来提供与MySQL的连接,接受多个参数,返回连接的对象: host: 数据库主机名,默认是本地主机 user: 数据库登录用户,默认是当前用户 passwd: 数据库登录密码,默认是空 db: 使用的数据库名,没有默认值 port: MySQL服务使用TCP端口,默认3306

连接对象提供了对事务操作的支持,标准方法有: commit() 提交 插入更新数据的时候一定要执行commit()否则不能真正的插入数据。 rollback() 回滚

运行SQL语句并接受返回值

1
2
cursor = conn.cursor()
n = cursor.execute(sql,param)

我们需要使用连接返回的对象获得一个cursor对象,并使用cursor提供的方法来进行工作。这类方法包括两大类: a) 执行命令 callproc(self, procname, args): 用来执行存储过程,接受的参数为存储过程名和参数列表,返回值为受影响的行数. execute(self, query, args): 执行单条SQL语句,接受的参数为SQL语句本身和使用的参数列表,返回值为受影响的行数. executemany(self, query, args): 执行单条SQL语句,但是重复执行参数列表里的参数,返回值为受影响的行数. nextset(self): 移动到下一个结果集 b) 接受返回值 fetchall(self):接受全部的返回结果行. fetchmany(self, size=None): 接受size调返回结果行,如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据 fetchone(self): 返回一条结果航 scroll(self, value, mode=‘relative’): 移动指针到某一行,如果mode=‘relative’,则表示当前所在行移动value条,如果mode=‘absolute’,则表示从结果集的一行移动value条

关闭数据库连接

需要分别关闭指针对象和连接对象,他们有名字相同的方法:

1
2
cursor.close()
conn.close()

例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import MySQLdb

try:
	connection = MySQLdb.connect(host='localhost', user='root', passwd='cvlabock', db = 'euryugasaki', port=3306)
	cur = connection.cursor()
	count = cur.execute('SELECT * FROM wp_users')

	#only accept one return value
	result = cur.fetchone()
	print result

	#accept five return values
	results = cur.fetchmany(5)
	for r in results:
		print r
	print "\n"

	#accept all the return values
	result2 = cur.fetchall()
	print result2

	#insert datas
	cur.execute('CREATE DATABASE IF NOT EXISTS testEuryugasaki')
	conn.select_db('testEuryugasaki')
        cur.execute('CREATE TABLE test(id int, info varchar(20))')
	value=[1, 'hi Longqi']
	cur.execute('INSERT INTO testEuryugasaki VALUES(%s, %s)', value)
	values=[]
	for i in range(20):
		values.append((i, 'hi Longqi '+str(i)))
	cur.excutemany('INSERT INTO testEueyugasaki VALUES(%s, %s)', values)
	cur.execute('UPDATE testEuryugasaki SET info="I am Euryugasaki" WHERE id = 3')

	conn.commit()

	cur.close()
	connection.close()

except MySQLdb.Error, e:
		print "MySQL Error %d: %s" % (e.args[0], e.args[1])

connet()方法中还有一个参数是charset,设置charset是让数据库的编码与自身相同,如果数据库的编码是gb2312,则使用charset=‘gb2312’,如果是utf-8则charset=‘urt8’

#MySQL# #Python#
  • Author:作者: Changkun Ou
  • Link:链接: https://changkun.de/blog/posts/python-mysqldb-tutorial/
  • All articles in this blog are licensed under本博客所有文章均采用 CC BY-NC-ND 4.0 unless stating additionally.许可协议,除非另有声明。
WatchKit框架与WatchApp交互初窥
谈谈 CV

Have thoughts on this?有想法?

I'd love to hear from you — questions, corrections, disagreements, or anything else.欢迎来信交流——问题、勘误、不同看法,或任何想说的。

hi@changkun.de
© 2008 - 2026 Changkun Ou. All rights reserved.保留所有权利。 | PV/UV: /
0%