将python数据库查询打印到HTML文档

时间:2015-06-20 22:47:28

标签: python sql oracle web

我写了一些python来查询Oracle数据库,我想用浏览器查看格式化的HTML表格。我不确定该怎么做。

我写的python如下:

#!/usr/bin/python2.6
import imp,datetime
import cx_Oracle

def index():
   conn_str = u'$USERNAME/$PASSWORD@$HOSTNAME:$PORT/$SERVICENAME'
   conn = cx_Oracle.connect(conn_str)
   c = conn.cursor()
   query = c.execute(u'SELECT $FIELD1, $FIELD2, $FIELD3 FROM $TABLE')
   cur = c.fetchall()
   for row in cur:
      print(str(row))


   conn.close()

我的同事有一个类似的脚本,他写的在凭证和光标创建方面非常复杂,他使用Python中的“写”输出。有了他,我至少可以输出到网页,我无法理解为什么我甚至不会显示任何内容,更不用说我的查询结果了。问题是他的输出没有格式化,即使我使用他的代码我也不知道如何给它表结构。

相比之下,他的:

#!/usr/bin/python2.6
import os
os.environ["ORACLE_BASE"]="/oracle"
os.environ["ORACLE_HOME"]="/oracle/product/11.2.0/client_1"
os.environ["LD_LIBRARY_PATH"]="/oracle/product/11.2.0/client_1/lib:/oracle/product/11.2.0/client_1/dbjava/lib"
os.environ["TNS_ADMIN"]="/oracle/product/11.2.0/client_1/network/admin"
import imp,datetime
import cx_Oracle

DBCONNECTED=""
CONNECT={}

def connect(tnsname):
   global DBCONNECTED
   DB={}
   DB['$DATABASE']=['$USER','$PASSWORD']

   #print str(DB[tnsname][0]+"/"+DB[tnsname][1]+"@"+tnsname)
   conn=cx_Oracle.connect(DB[tnsname][0]+"/"+DB[tnsname][1]+"@"+tnsname)
   DBCONNECTED+=tnsname+":"
   return conn

def getcredentials(env,user):
   env=env.lower()
   CRED={};CRED['$DATABASENAME']={};
   CRED['$DATABASENAME']['$USERNAME']='$PASSWORD'
   if env in CRED and user in CRED[env]:
      return CRED[env][user]
   else:
      return 'ERR'

def returnconnection(dbtns):
   global CONNECT
   if DBCONNECTED.find(dbtns+":")==-1: #connection hasn't been initialized, do that
      CONNECT[dbtns]=connect(dbtns.lower())
   cur= CONNECT[dbtns].cursor()
   return cur

def runq(dbtns,query,bindvar=''):
   query=query.replace("\n"," ")
   cur=returnconnection(dbtns)
   if bindvar=='':
      cur.execute(query)
   else:
      cur.execute(query,bindvar)

   rs=cur.fetchall() #this should be fine for up to several thousand rows
   return rs

def index (req,rssid=""):
   global R; R=req; R.content_type="text/html"
   R.write("""
      <!DOCTYPE HTML">
      <html><head><title>TABLES</title><META HTTP-EQUIV='Pragma' CONTENT='no-cache'>
      </head>
      <table>
   """)
   dat=runq('$DATABASE','SELECT $FIELD1, $FIELD2, $FIELD3 FROM $TABLE')

   for row in dat:
      R.write(str(row))


   #write footer
   R.write("""
   </table>
   </body></html>
   """)

我喜欢我写的简单,但我的同事显然正在做一些正确的事情,将输出吐出到页面。当我尝试重新创建他使用“Global R”来调用“R.write”时,我得到一个关于content_type模块的unicode错误,这看起来很奇怪。

无论如何,我觉得这应该是非常简单的。我更习惯PHP,这是我第一次使用Python创建这种网页。

想法?

1 个答案:

答案 0 :(得分:0)

为什么使用unicode字符串?你的同事没有。尝试没有&#34; u&#34;字符串上的前缀。

相关问题