SQLAlchemy не может подключиться к локальной базе данных, используя абсолютный путь - PullRequest
0 голосов
/ 27 октября 2018

После долгих хлопот с настройкой программы POSTGRESQL для пользователя с прописной буквой и выяснением того, как записать путь abs в windows: set DATABASE_URL=postgresql:///c:\\Program Files\\PostgreSQL\\9.3\\data\\books.db

(без пробелов! Я научился этому нелегко!)

в Windows У меня все еще возникают проблемы с подключением к локальной базе данных, созданной мной с помощью имеющегося у меня тестового скрипта.

в PSQL существует база данных с именем «books», которая отображается с «\ г».Каталог по умолчанию для сохранения баз данных не был изменен с POSTGRESQL по умолчанию.и все же, когда я запускаю программу:

import csv
import os

from sqlalchemy_utils import database_exists
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))


def import_csv():
    f = open("books.csv")
    reader = csv.reader(f)
    for isbn, title, author, year in reader:
        db.execute("INSERT INTO books (isbn, title, author, year) VALUES (:isbn, :title, :author, :year)",
                    {"isbn":isbn, "title":title, "author":author, "year":year})
    db.commit()

import_csv()

Почему это не подключается?(Я вырезал много постороннего кода, чтобы показать активные части, с которыми я имею дело)

1 Ответ

0 голосов
/ 27 октября 2018

После долгих хлопот с настройкой программы POSTGRESQL для пользователя с прописной буквой и выяснением, как записать путь abs в windows: set DATABASE_URL = postgresql: /// c: \ Program Files \ PostgreSQL \ 9.3 \ data \ books.db

Postgres - это сервер базы данных. Вы не можете подключиться напрямую к одному из базовых файлов, как это. Вам необходимо подключиться к сетевой службе, предоставляемой сервером базы данных Postgres.

Приемлемые URL-адреса SQLAlchemy для подключения к базе данных Postgres показаны здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...