gpt4 book ai didi

python - Pyramid Postgresql 连接问题

转载 作者:行者123 更新时间:2023-11-29 12:11:21 26 4
gpt4 key购买 nike

在 Pyramid 中从 SQLITE3 迁移到 Postgresql (psql (PostgreSQL) 9.4.5)

我一直在使用 sqlite3 访问 sqlalchemy 数据库。我已经开发了一个 pyramid web 框架并且 sqlite3 一直在工作。但是,我想不再使用 sqlite3 而是将 postgresql 用于数据库。我对此很陌生,正在尝试弄清楚我是否遗漏了一步。

我关注了this tutorial在下载 psycopg2(将其添加到 setup.py)中更改 development.ini 文件:
sqlalchemy.url = sqlite:////Users/ack/code/venv/NotssDB/notssdb/notssdb
至:
sqlalchemy.url = postgresql://ack:password@localhost:5432/notssdb
我通过 this site 安装了 postgres使用 mac osx。

话虽如此,当我启动应用程序时 pserve development.ini ...数据库未连接或加载。当我使用 sqlite url 时,数据库会连接。

我可能遗漏了什么?

开发.ini在 Pyramid 中:

sqlalchemy.url = postgresql://ack:password@localhost:5432/notssdb

# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1

###
# wsgi server configuration
###

[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 5432

postgresql.conf

# - Connection Settings -

#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)

postgres 服务器日志:

LOG:  invalid length of startup packet
LOG: invalid length of startup packet

我是否必须更改 postgres config file ? (stacks question 也提到了它)...我在 pg_hba.conf 中看到了这个:

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 0.0.0.0/0 trust
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication ack trust
#host replication ack 127.0.0.1/32 trust
#host replication ack ::1/128 trust

使用终端,这将我连接到 postgres 上的数据库:

psql -h localhost -d notssdb -p 5432

postgresql 服务器自动启动

我如何启动 Pyramid 应用:

$ python setup.py develop #installs packages 
$ initialize_notssweb_db development.ini # --db Session--
$ pserve development.ini #terminal: --db Session-- Starting server in PID 3501. serving on http://0.0.0.0:5432

检查服务器:

$  pg_ctl -D /usr/local/var/postgres status
pg_ctl: server is running (PID: 701)
/usr/local/Cellar/postgresql/9.4.5/bin/postgres "-D" "/usr/local/var/postgres" "-r" "/usr/local/var/postgres/server.log"

最佳答案

不确定这是否是唯一的问题,但看起来您有端口冲突。您尝试在 postgresql 默认监听的相同端口 (5432) 上启动 Pyramid 应用程序(通过 pserve)。

[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 5432

这里的端口参数是pserve监听端口,改成8000什么的。

关于python - Pyramid Postgresql 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com