日期:2014-05-16  浏览次数:20756 次

Python与MySQL首次交互

        前两天在工作之余研究了一下Python,对基础有了大致了解,就想拿她很MqSQL交互一下。

一开始就遇到了问题,要import MySQLdb,search发现有人说安装mysql-python,于是就很困惑mysql-python是什么东西呢,下载了就是安装不上,参考的是如下文章:http://blog.csdn.net/wklken/article/details/7253245。于是很纠结,mysql-python就是python用的数据库,还是什么?

继续search,终于揭开心中的迷雾:http://gdgzzch.blog.163.com/blog/static/376404522013012115950320/

        原来MySQLdb就是一个驱动,好了终于搞定了,开始初次接触,很是让人心动。


#encoding=utf-8
#coding=utf-8
#test connection mysql database
#author wangchuanbo
#time 2013-09-26

#导入MySQLdb模块,注意大小写(如果是没有安装,ubuntu->sudo apt-install python-mysqldb)
import sys
import MySQLdb

try:
	# Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入	
	reload(sys)
	#为了解决乱码问题
	sys.setdefaultencoding('utf-8')	
	#建立和数据库的连接
	conn = MySQLdb.connect(host='localhost',user='root',passwd='wcb280280',charset='utf8')
	#获取操作游标
	cur = conn.cursor()
	#执行SQL
	cur.execute('create database if not exists python character set utf8')

	#选择数据库
	conn.select_db('python')

	#建表
	sql_create_user = 'create table tbl_user(id int unsigned primary key auto_increment, username varchar(20) not null,sex char(2) not null) default charset=utf8'
	cur.execute(sql_create_user)
	#插入记录
	sql_insert_user = "insert into tbl_user(username,sex) values('方平','女')"
	cur.execute(sql_insert_user)

	#查询记录
	sql_select_user = 'select username,sex from tbl_user'
	cur.execute(sql_select_user)
	result = cur.fetchone()
	#获取第一条记录
	print '第一条记录是:'
	#为了解决乱码问题
	result = str(result)
	result = result.decode('utf-8')
	print result

	#提交事物(开始死活插不进去,使劲插,各种纠结,也不报错,就是少了这句,有些版本的驱动可能不需要)
	conn.commit()
	#关闭连接,释放资源
	cur.close()
	conn.close()
except MySQLdb.Error,e:
     print "Mysql Error %d: %s" % (e.args[0], e.args[1])


表结构都是utf8编码:




conn_mysql.py保存也是 utf8


 结果是:


           主要参考了两篇文章,再次表示感谢,不过在初次阅读的时候还有有些费解,比如创建数据库用了三个引号的字符串,conn.comment()没有,插入数据的时候使用了列表,可能不利于初学者。

本来打算遵循Python的大道之简的原则,写的让初学者一看便知,结果事总于愿违,遇到了和当初自学PHP是的头疼问题,想当初搞定了PHP的乱码问题,以为在也不怕乱码了,结果这里又卡住了,一开始是插入中文的时候有乱码,最后是读取的时候有乱码,于是代码中就增加了太多解决乱码的多余代码,建议初学者,一开始用英文。

最后整了很久,翻了很久Google这本书,还是没有搞定查询乱码的问题,不知何故,今天实在是没有精力了,改天找时间,捉住BUG,读者如若明白,大可指点一二,感激不尽。

参考的文章如下,很全:

http://www.cnblogs.com/rollenholt/archive/2012/05/29/2524327.html

http://blog.csdn.net/wanghai__/article/details/6718297