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
http://blog.csdn.net/foyuan/article/details/1711100
http://blog.csdn.net/liuyukuan/article/details/5187633
http://www.cnblogs.com/maseng/archive/2013/03/12/python-mysql.html