5月 27

python连接oracle和mysql备忘

import cx_Oracle
    
def sql_comm(sql_run):
    db = cx_Oracle.connect(‘user’, ‘passwd’, ‘IP:port/sid’) 
    try:
        cursor=db.cursor()
    except cx_Oracle.ERROR,e:
        print “Error %d:%s”%(e.args[0],e.args[1])
    try:
           cursor.execute(sql_run)
    result_set=cursor.fetchall()
           cursor.close()
           db.commit()
           db.close()
    return result_set
    except e:
        print “Error %s”%(e.args[0])
        cursor.close()
        db.close()

python连接mysql

import MySQLdb

def sql_comm(sql_run):
        try:
                conn=MySQLdb.connect(host=host,user=username,passwd=pwd,db=database)
                cursor = conn.cursor()
        except MySQLdb.Error,e:
                print “Error %d:%s”%(e.args[0],e.args[1])
        try:
                cursor.execute(sql_run)
                result_set=cursor.fetchall()
                cursor.close()
                db.close()
                return result_set
        except MySQLdb.Error,e:
                print “Error %d:%s”%(e.args[0],e.args[1])
                cursor.close()
                db.close()

注意部分,在mysql修改数据时最好使用commit,如果只是select就不用了,不然得不到数据。
在oracle和mysql插入大量数据时,可以使用executemany,需要注意的是,oracle插入大量
数据时要将数据类型为元组,然后放到列表中。建议一次插入10000行。

5月 08

python查找目录下指定文件

[张子萌 2011-05]
导入os模块使用walk函数。walk函数比较简单,迭代返回元组,一个元组有三个元
素(遍历的路径、当前遍历路径下的目录、当前遍历目录下的文件名)。

建立一个textfind目录。建立目录1,目录1下有目录2和文件1.txt,在目录2下有
3目录、33目录和2.txt,在目录3下有3.txt。
测试结果:
>>> import os
>>> a=os.walk(r’testfind/’)
>>> for i in a:
… print i

(‘testfind/’, [‘1’], [])
(‘testfind/1’, [‘2’], [‘1.txt’])
(‘testfind/1/2’, [‘3′, ’33’], [‘2.txt’])
(‘testfind/1/2/3’, [], [‘3.txt’])
(‘testfind/1/2/33’, [], [])

偷懒的方法用命令find比较简单。使用python如果要找指定文件,还需要用正则匹
配一下。

import re
import os
find_file=re.compile(r”.txt$”)
find_path=r”./testfind”
find_walk=os.walk(find_path)
for path,dirs,files in find_walk:
for file in files:
if find_file.search(file):
print(“%s”%path+”/”+file)