通过webserver在web2py框架中调用python脚本

时间:2016-07-05 16:21:28

标签: python nginx web2py

我在服务器上安装了NGINX UWSGI和WEB2PY。 Web2py应用程序通过访问数据库并在表中打印行来执行一项功能。

def fetch():

    import psycopg2

    conn = psycopg2.connect(database="postgres",
                    user="postgres",
                    password="qwerty",
                    host="127.0.0.1")
    cur = conn.cursor()
    cur.execute("SELECT id, name from TEST")
    rows = cur.fetchall()
    conn.close()
    return rows

在本地调用函数时,将返回表内容。 但是当我试图从远程机器调用该函数时,我得到一个内部错误500.

另一个有趣的事情是,当函数看起来像这样:

def hello():
    return 'hello'

字符串'你好'退回。开始添加导入指令会立即导致生成错误页面。

任何人都可以建议正确的应用程序语法/逻辑吗?

2 个答案:

答案 0 :(得分:0)

我的猜测是你的MySQL服务不允许远程访问。你能检查一下你的MySQL配置吗?

vim /etc/mysql/my.cnf

注释掉以下几行。

#bind-address           = 127.0.0.1
#skip-networking

如果配置文件中没有跳过网络线,只需添加并注释掉它。

然后重启mysql服务。

service mysql restart

答案 1 :(得分:0)

原谅这个愚蠢的问题,但是你检查过你的服务器上是否有可用的模块吗?

当您尝试导入时,如果您的hello函数中出现错误,那么它是相同的指令import psycopg2吗?

试试这个: 假设fetch()在controllers/default.py上定义 打开文件夹views/default并创建一个名为fetch.html的新文件 将其粘贴到

{{extend 'layout.html'}}
{{=rows}}

如果您愿意,fetch.html是一个视图或模板

修改fetch()以返回包含要打印的视图行的字典

return dict(rows=rows)

这是非常困难的,您可以在本书中找到有关基本步骤的更多信息 - > http://www.web2py.com/books/default/chapter/29/03/overview#Postbacks