Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python数据库查询打印到HTML文档_Python_Sql_Oracle_Web - Fatal编程技术网

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

将python数据库查询打印到HTML文档,python,sql,oracle,web,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(co

我编写了一些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中的“write”来输出。有了他的帮助,我至少可以得到一个网页的输出,我不明白为什么我的网页连什么都不显示,更不用说我的查询结果了。问题是他的输出结果是未格式化的,即使我使用了他的代码,我也不知道如何给出它的表结构

相比之下,他的:

#!/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>
   """)
#/usr/bin/python2.6
导入操作系统
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”
导入imp,日期时间
导入cx_Oracle
DBCONNECTED=“”
CONNECT={}
def连接(tnsname):
全局数据库连接
DB={}
DB['$DATABASE']=['$USER','$PASSWORD']
#打印str(DB[tnsname][0]+“/”+DB[tnsname][1]+“@”+tnsname)
conn=cx_Oracle.connect(DB[tnsname][0]+“/”+DB[tnsname][1]+“@”+tnsname)
DBCONNECTED+=tnsname+“:”
返回控制
def getcredentials(环境、用户):
env=env.lower()
CRED={};CRED['$DATABASENAME']={};
CRED['$DATABASENAME']['$USERNAME']='$PASSWORD'
如果环境在CRED中,用户在CRED[env]:
return CRED[env][user]
其他:
返回“ERR”
def返回连接(dbtns):
全球连接
如果DBCONNECTED.find(dbtns+“:”)==-1:#连接尚未初始化,请执行该操作
CONNECT[dbtns]=CONNECT(dbtns.lower())
cur=CONNECT[dbtns].cursor()
返回电流
def runq(dbtns,query,bindvar=''):
query=query.replace(“\n”和“”)
cur=返回连接(dbtns)
如果bindvar='':
当前执行(查询)
其他:
cur.execute(查询,bindvar)
rs=cur.fetchall()#这对于多达几千行应该是可以的
返回rs
def索引(req,rssid=“”):
全球R;R=req;R.content\u type=“text/html”
R.写(“”)

为什么要使用unicode字符串?您的同事没有。请尝试在字符串上不使用“u”前缀。

我意识到这可能是一个问题,所以我尝试了不使用。在尝试镜像他使用“R.write”时,我仍然收到一个属性错误"然而,这一次它说'str'对象必须具有'content_type'属性刚刚返回…由jove说,我想我已经得到了它…至少让我的查询显示在浏览器块中。我在连接字符串中缺少了一个u。现在我只需找出如何格式化它。我可以按表列出它,但结果显示为字符串ro像('AA','text',36,36)等等。我不知道如何拆分元素并在表格中打印它们。