python脚本

时间:2015-05-26 07:36:46

标签: python oracle

我现在遇到了另一个问题,使用下面给出的代码我无法登录,它仍然说Access被拒绝,即使用户名和密码是正确的。控制台上没有错误。看起来我在连接后遗失了一些东西。

我想在这里做的就是修改TODO部分,以便在连接和成功登录后对我的Oracle数据库运行计算查询,它应该显示权限表的结果。

import cgi
import cx_Oracle

print("Content-type: text/html\n")
print("<title>Test</title>")
print("<body><center>")

try:
    # get post data
    form = cgi.FieldStorage()
    name = form['name'].value if 'name' in form else ''
    pwd = form['pwd'].value if 'pwd' in form else ''

    permissions = []
    # query to check password and get permissions
    query = "SELECT PERMISSIONS FROM USERS WHERE NAME='{}' and PWD='{}'".format(name, pwd)

    # TODO: connect to database and run query
    host = '123.abc.com'
    port = 1521
    SID = 'orcl'
    dsn_tns = cx_Oracle.makedsn(host, port, SID)

    connection = cx_Oracle.connect('abuser', 'userpass', dsn_tns)
    curs = connection.cursor()
    result = curs.execute(query)

    # TODO section ends

    if len(permissions) > 0:
        print("<H1>Access granted. You have the following permissions: {}.</H1>".format(permissions[0][0]))
    else:
        print("<H1>Access denied.</H1>")
    connection.close()    
except cx_Oracle.DatabaseError as e:
    # for ease of debugging
    print("Database Error: {}".format(e))
    print("<br>Query: {}".format(query))

print("""
<form action="../login.html" method="GET">
    <input type="submit" value="Back to Login">
</form>
""")

print('</center></body>')

2 个答案:

答案 0 :(得分:1)

从第36行开始你的缩进太棒了(我猜你上传了部分源代码),它从哪里开始host =

答案 1 :(得分:0)

主机开始的行中有一个额外的缩进。 Python中的缩进通常遵循:。下面的代码应该修复你得到的缩进错误。有关此内容的更多信息,请访问http://www.diveintopython.net/getting_to_know_python/indenting_code.html

import cgi
import cx_Oracle

print("Content-type: text/html\n")
print("<title>Test</title>")
print("<body><center>")

try:
    # get post data
    form = cgi.FieldStorage()
    name = form['name'].value if 'name' in form else ''
    pwd = form['pwd'].value if 'pwd' in form else ''

    permissions = []
    # query to check password and get permissions
    query = "select permissions from users where name='{}' and pwd='{}'".format(name, pwd)

    # Connect to database and run query
    host = '123.abc.com'
    port = 1521
    SID = 'orcl'
    dsn_tns = cx_Oracle.makedsn(host, port, SID)

    connection = cx_Oracle.connect('abcuser', 'abcuserpassword', dsn_tns)
    results = connection.execute(query)

    # TODO section ends

    if len(permissions) > 0:
        print("<H1>Access granted. You have the following permissions: {}.</H1>".format(permissions[0][0]))
    else:
        print("<H1>Access denied.</H1>")
except cx_Oracle.DatabaseError as e:
    # for ease of debugging
    print("Database Error: {}".format(e))
    print("<br>Query: {}".format(query))