Postgresql 操作错误
Postgresql Operational Error
我是 web.py 的初学者,正在研究 web.py 教程表单部分。我在表单库中看到了用于简单注册的代码。 http://webpy.org/form and the upgrades for web.py0.3 http://webpy.org/docs/0.3/upgrade
我正在尝试编写用于注册用户名和密码的表单,我安装了 pyscopg2 和 postgres2.6.1 以及他们在使用 pip 的教程中推荐的其他工具。
我在practice/bin/code.py
中写了下面的代码
import web
from web import form
urls = (
'/' , 'index'
)
app = web.application(urls , globals())
render = web.template.render('templates/')
signup = form.Form(
form.Textbox('Username'),
form.Password('Password'),
form.Password('Password_Again'),
validators = [form.Validator('Passwords did not match' , lambda i: i.Password == i.Password_Again)]
)
class index(object):
def GET(self):
form = signup()
return render.formtest(form = form)
def POST(self):
form = signup()
if not form.validates():
return render.formtest(form = form)
else:
db = web.database(dbn='postgres', db='test' ,host="127.0.0.1" ,user='richa9@gmail.com' ,password='123',port='5432')
login= db.insert('test' , **form.d)
return "Great success! you connected to your first database!"
if __name__ == "__main__" :
web.internalerror = web.debugerror
app.run()
里面 practice/templates/formtest.html
$def with (form)
<form name = "main" method = "POST">
$if not form.valid: <p class = "error"> Try Again! </p>
$:form.render()
<input type = "submit"/>
</form>
我研究并阅读了 web.py 的文档,但由于我不熟悉应用程序中的数据库,所以我遇到了同样的错误。当我在 cmd 中 运行 code.py 并启动 8080 服务器时,我在 cmd 中得到了这个 Traceback:
127.0.0.1:55677 - - [08/May/2016 13:02:53] "HTTP/1.1 POST /" - 500 Internal Server Error
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\web\application.py", line 239, in process
return self.handle()
File "C:\Python27\lib\site-packages\web\application.py", line 230, in handle
return self._delegate(fn, self.fvars, args)
File "C:\Python27\lib\site-packages\web\application.py", line 420, in _delegate
return handle_class(cls)
File "C:\Python27\lib\site-packages\web\application.py", line 396, in handle_class
return tocall(*args)
File "C:\practice\bin\code.py", line 35, in POST
login= db.insert('test' , **form.d)
File "C:\Python27\lib\site-packages\web\db.py", line 766, in insert
db_cursor = self._db_cursor()
File "C:\Python27\lib\site-packages\web\db.py", line 566, in _db_cursor
return self.ctx.db.cursor()
File "C:\Python27\lib\site-packages\web\db.py", line 507, in _getctx
self._load_context(self._ctx)
File "C:\Python27\lib\site-packages\web\db.py", line 518, in _load_context
ctx.db = self._connect(self.keywords)
File "C:\Python27\lib\site-packages\web\db.py", line 960, in _connect
conn = DB._connect(self, keywords)
File "C:\Python27\lib\site-packages\web\db.py", line 546, in _connect
return self.db_module.connect(**keywords)
File "C:\Python27\lib\site-packages\psycopg2\__init__.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
当我输入不匹配的密码时,formtest.html响应,但数据库没有响应system.Any如何解决?提前致谢。
这里的问题是您需要在您的主机上设置一个 postgresql 服务器才能完成练习。
由于您在 Windows,您需要下载 windows installer and then follow the documentation 如何安装服务器。
安装服务器后,您需要创建登录角色和数据库并将角色分配给数据库,然后才能继续。
为此,请使用作为服务器一部分安装的 pgadminIII
工具;并按照以下步骤操作:
- 展开左侧面板
Server Groups
下的 Servers
树。
- 双击列出的服务器(应该是 PostgreSQL 9.5 (localhost:5432))。这会将您连接到服务器。您需要使用您在安装程序中设置的密码。
- 右键单击
Login Roles
,然后 select New Role..
- 填写角色名称(这是用户的登录名)
- 输入两个密码。
- 单击“确定”。
- 右键单击
Databases
,然后 select New Database..
- 给它起个名字
- 在所有者字段中,输入您在第 4 步中在角色名称中输入的名称。
- 点击确定
然后,在你的代码中你需要调整这一行:
db = web.database(dbn='postgres',
db='test', # replace
user='richa9@gmail.com', # replace
password='123', # replace
port='5432', host="127.0.0.1")
并更改适当的值。
重要 - 即使您按照这些说明进行操作,您的代码也可能会失败,因为您尚未在数据库中创建任何表并且您正在尝试插入记录。查看 web.py 文档以了解本教程需要哪些表。
我是 web.py 的初学者,正在研究 web.py 教程表单部分。我在表单库中看到了用于简单注册的代码。 http://webpy.org/form and the upgrades for web.py0.3 http://webpy.org/docs/0.3/upgrade
我正在尝试编写用于注册用户名和密码的表单,我安装了 pyscopg2 和 postgres2.6.1 以及他们在使用 pip 的教程中推荐的其他工具。 我在practice/bin/code.py
中写了下面的代码import web
from web import form
urls = (
'/' , 'index'
)
app = web.application(urls , globals())
render = web.template.render('templates/')
signup = form.Form(
form.Textbox('Username'),
form.Password('Password'),
form.Password('Password_Again'),
validators = [form.Validator('Passwords did not match' , lambda i: i.Password == i.Password_Again)]
)
class index(object):
def GET(self):
form = signup()
return render.formtest(form = form)
def POST(self):
form = signup()
if not form.validates():
return render.formtest(form = form)
else:
db = web.database(dbn='postgres', db='test' ,host="127.0.0.1" ,user='richa9@gmail.com' ,password='123',port='5432')
login= db.insert('test' , **form.d)
return "Great success! you connected to your first database!"
if __name__ == "__main__" :
web.internalerror = web.debugerror
app.run()
里面 practice/templates/formtest.html
$def with (form)
<form name = "main" method = "POST">
$if not form.valid: <p class = "error"> Try Again! </p>
$:form.render()
<input type = "submit"/>
</form>
我研究并阅读了 web.py 的文档,但由于我不熟悉应用程序中的数据库,所以我遇到了同样的错误。当我在 cmd 中 运行 code.py 并启动 8080 服务器时,我在 cmd 中得到了这个 Traceback:
127.0.0.1:55677 - - [08/May/2016 13:02:53] "HTTP/1.1 POST /" - 500 Internal Server Error
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\web\application.py", line 239, in process
return self.handle()
File "C:\Python27\lib\site-packages\web\application.py", line 230, in handle
return self._delegate(fn, self.fvars, args)
File "C:\Python27\lib\site-packages\web\application.py", line 420, in _delegate
return handle_class(cls)
File "C:\Python27\lib\site-packages\web\application.py", line 396, in handle_class
return tocall(*args)
File "C:\practice\bin\code.py", line 35, in POST
login= db.insert('test' , **form.d)
File "C:\Python27\lib\site-packages\web\db.py", line 766, in insert
db_cursor = self._db_cursor()
File "C:\Python27\lib\site-packages\web\db.py", line 566, in _db_cursor
return self.ctx.db.cursor()
File "C:\Python27\lib\site-packages\web\db.py", line 507, in _getctx
self._load_context(self._ctx)
File "C:\Python27\lib\site-packages\web\db.py", line 518, in _load_context
ctx.db = self._connect(self.keywords)
File "C:\Python27\lib\site-packages\web\db.py", line 960, in _connect
conn = DB._connect(self, keywords)
File "C:\Python27\lib\site-packages\web\db.py", line 546, in _connect
return self.db_module.connect(**keywords)
File "C:\Python27\lib\site-packages\psycopg2\__init__.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
当我输入不匹配的密码时,formtest.html响应,但数据库没有响应system.Any如何解决?提前致谢。
这里的问题是您需要在您的主机上设置一个 postgresql 服务器才能完成练习。
由于您在 Windows,您需要下载 windows installer and then follow the documentation 如何安装服务器。
安装服务器后,您需要创建登录角色和数据库并将角色分配给数据库,然后才能继续。
为此,请使用作为服务器一部分安装的 pgadminIII
工具;并按照以下步骤操作:
- 展开左侧面板
Server Groups
下的Servers
树。 - 双击列出的服务器(应该是 PostgreSQL 9.5 (localhost:5432))。这会将您连接到服务器。您需要使用您在安装程序中设置的密码。
- 右键单击
Login Roles
,然后 selectNew Role..
- 填写角色名称(这是用户的登录名)
- 输入两个密码。
- 单击“确定”。
- 右键单击
Databases
,然后 selectNew Database..
- 给它起个名字
- 在所有者字段中,输入您在第 4 步中在角色名称中输入的名称。
- 点击确定
然后,在你的代码中你需要调整这一行:
db = web.database(dbn='postgres',
db='test', # replace
user='richa9@gmail.com', # replace
password='123', # replace
port='5432', host="127.0.0.1")
并更改适当的值。
重要 - 即使您按照这些说明进行操作,您的代码也可能会失败,因为您尚未在数据库中创建任何表并且您正在尝试插入记录。查看 web.py 文档以了解本教程需要哪些表。