我在服务器上安装了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'
字符串'你好'退回。开始添加导入指令会立即导致生成错误页面。
任何人都可以建议正确的应用程序语法/逻辑吗?
答案 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