您的位置:首页 > 编程语言 > Python开发

python连接数据库出报表

2015-12-28 15:19 225 查看
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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: