python+mysql 学习笔记

发现用C++处理NLP问题,简直蛋疼的要死……so,好好学习一下python

python mysql安装历程   (fedora系统下)     

安装mysql:http://blog.sina.com.cn/s/blog_88e0154d01012a0t.html

这个查看了好多资料,一直没有成功,不知道为什么……后来看到这个网页:http://www.drupaluser.org/node/1566 (PS:chrome下打开有问题,用firefox试试)

用第二种方法(把最常用的方法忽略了,汗- -!)安装成功。
使用root账户,yum -y install MySQL-python.x86_64

python,连接mysql
参考:http://hi.baidu.com/geoconst/blog/item/d8d1cced12450d2c62d09f16.html

连接mysql的代码:

# -*- coding: utf-8 -*-

import sys
import MySQLdb

reload(sys)
sys.setdefaultencoding('utf-8')

def getdata ():
    try:
        conn = MySQLdb.connect(host='localhost', user='root', passwd='mysql', db='test', port=3306, charset='utf8')
        try:
            cur = conn.cursor()
            sql = r'select * from person'
            cur.execute(sql)
            allPerson = cur.fetchall()
        finally:
            cur.close()
            conn.close()
    except Exception, e:
        print '数据库错误:', e
        return

    for rec in allPerson:
        print rec[0],rec[1]

if __name__ == '__main__':
    getdata()

 

代码很明了,没什么好说明的。其中:

reload(sys)
sys.setdefaultencoding('utf-8')

以及数据库连接时的charset设置,是用来解决中文问题的。当然mysql也是utf8编码的。


python,向mysql中插入数据
#如果需要批量的插入数据,就这样做
sql="insert into cdinfo values(0,%s,%s,%s,%s,%s)"
#每个值的集合为一个tuple,整个参数集组成一个tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法来批量的插入数据.这真是一个很酷的方法!
n=cursor.executemany(sql,param)

需要注意的是(或者说是我感到奇怪的是),在执行完插入或删除或修改操作后,需要调用一下conn.commit()方法进行提交.这样,数据才会真正保存在数据库中.我不清楚是否是我的mysql设置问题,总之,今天我在一开始使用的时候,如果不用commit,那数据就不会保留在数据库中,但是,数据确实在数据库呆过.因为自动编号进行了累积,而且返回的受影响的行数并不为0.
参考:http://bbs.blueidea.com/thread-2813296-1-1.html
中文乱码问题:http://www.iteye.com/topic/406843

递归遍历目录:
参考:http://bluecrystal.iteye.com/blog/116670
  1. #listdir.py
  2. import os  
  3. # 递归遍历指定的目录  
  4. # level -- 递归的层数,用这个参数来控制打印的缩进  
  5. # path  == 遍历起始绝对路径  
  6. def listyoudir(level, path):  
  7.     for i in os.listdir(path):  
  8.         print '  '*(level+1) + i  
  9.         if os.path.isdir(path + '\' + i):  
  10.             listyoudir(level+1, path + '\' + i)  
  11.           
  12. #测试代码  
  13. rootpath = os.path.abspath('.')  
  14. print rootpath  
  15. listyoudir(0, rootpath)  

你可能感兴趣的:(python+mysql 学习笔记)