• 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

  • 相关阅读:
    LeftoverDataException,依赖包,apache license 2.0
    GPL,BSD,Apache,MIT开源许可协议
    一次重构经历
    转载:reactor模式学习
    版本控制学习
    系统开发,出错处理,日志
    最近学习linux命令的一个总结
    sudo,linux 新建账号,并开通ssh登录
    运行R 报错R cannot R_TempDir, 继而发现/dev/mapper/VG00-LV01 磁盘空间已满
    用InputStream读出来转换成String类型
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341763.html
Copyright © 2020-2023  润新知