发现用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
- #listdir.py
- import os
- # 递归遍历指定的目录
- # level -- 递归的层数,用这个参数来控制打印的缩进
- # path == 遍历起始绝对路径
- def listyoudir(level, path):
- for i in os.listdir(path):
- print ' '*(level+1) + i
- if os.path.isdir(path + '\' + i):
- listyoudir(level+1, path + '\' + i)
-
- #测试代码
- rootpath = os.path.abspath('.')
- print rootpath
- listyoudir(0, rootpath)