python连接数据库出报表

python连接oracle数据库后,读取sql文件,以;分隔,遍历执行sql,将列名和记录打印出来
#!/usr/bin/python
#coding=utf8
###应该数据库连接和游标作为返回值使用,分别关闭
import cx_Oracle as cx_ora
import os

#os.environ['NLS_LANG']="SIMPLIFIED CHINESE_CHINA.UTF8"
os.environ['NLS_LANG']="AMERICAN_AMERICA.AL32UTF8"

def connDB(username='dbaro',passwd='VgcAv1f4JNRvqMokXS9v',dbdomain='192.168.54.21',port='1521',sid='slave'):
        tns=cx_ora.makedsn(dbdomain,port,sid) #使用makedsn配置tns_name
        conn=cx_ora.connect(username,passwd,tns)
        return conn

def closeDB(conn):
        conn.close()
def queryColumn(conn,sql):
        cur=conn.cursor() ##可以反复使用
        cur.execute(sql)
        desc=cur.description
        cur.close()
        return desc

def queryRecord(conn,sql):
        cur=conn.cursor()
        cur.execute(sql)
        records=cur.fetchall()
        cur.close()
        return records

def deleteData(conn,sql):
        cur=conn.cursor()
        cur.execute(sql)      
        cur.close()
        conn.commit()

def insertDatas(conn, sql, results): ##插入数据集,记录集的列表
        cur = conn.cursor()
        cur.prepare(sql)
        cur.executemany(None, results)
        cur.close()
        conn.commit()
        
def writeRecord(conn,readfn):
        fobj=open(readfn,'r')
        sqls=fobj.read().split(';')
        fobj.close ##记得关闭文件句柄

        ###conn=connDB() ##打开数据库连接
        for incre in range(len(sqls)-1): ##遍历每一条sql执行
                columns=queryColumn(conn,sqls[incre])
                for item in range(len(columns)):
                        print("%-18s" %(columns[item][0])),
                ##print替换为os.linesep
                print

                records=queryRecord(conn,sqls[incre])
                for record in records:
                        for colvalue in record:
                                print("%-20s" %(str(colvalue))),
                        ##print替换为os.linesep
                        print
                print
        ##closeDB(conn) ##关闭数据库连接        
        print
        fobj.close()

你可能感兴趣的:(python之路)