2015-10-15 5 views
2

Переход от sqlite3 к Postgresql (PSQL (PostgreSQL) 9.4.5) в пирамидеPyramid Postgresql Проблема соединения

Я использую sqlite3 для доступа к базе данных sqlalchemy. Я разработал веб-фреймворк pyramid и работает sqlite3. Тем не менее, я хотел уйти от использования sqlite3 и вместо этого использовать postgresql для db. Я новичок в этом, и я пытаюсь выяснить, не упустил ли я шаг.

Я последовал this tutorial в скачивании psycopg2 (добавляя его setup.py) изменения файла development.ini от:
sqlalchemy.url = sqlite:////Users/ack/code/venv/NotssDB/notssdb/notssdb
к:
sqlalchemy.url = postgresql://ack:[email protected]:5432/notssdb
Я установил Postgres через this site с помощью Mac OSX.

С учетом сказанного, когда я запускаю приложение pserve development.ini ... база данных не соединяется или не загружается. Когда я использую url sqlite, база данных подключается.

Что я могу пропустить?

development.ini в пирамиде:

sqlalchemy.url = postgresql://ack:[email protected]: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? (A 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 

NEW

сервер 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" 
+0

Не могли бы вы отредактировать вопрос, включив соответствующие сообщения об ошибках «не загружать», а также проверить файлы журнала PostgreSQL. –

+0

@MikkoOhtamaa Мне жаль, что у меня нет приглашения 'not loading' ... Я получаю' Нет данных ERR_EMPTY_RESPONSE. Не удалось загрузить веб-страницу, потому что сервер не отправил данные. ' – thesayhey

+0

Вам нужно получить ошибку трассировки Python, а не то, что говорит ваш веб-сервер. Он находится в консоли приложения Pyramid или в файлах журнала. –

ответ

2

Не уверен, если это единственная проблема, но, похоже, у вас есть порт конфликт. Вы пытаетесь запустить приложение пирамиды (через pserve) на том же порту postgresql, который прослушивает по умолчанию (5432).

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

Параметр порта здесь для порта прослушивания pserve, изменить его на 8000 или что-то в этом роде.

+0

Да, изменение порта позволило 'postgres' взаимодействовать с пирамидой. Я понял это случайно, но ваше объяснение лучше для тех, кто может войти в ту же проблему. Спасибо, Сергей. – thesayhey

Смежные вопросы