Можно ли указать путь для создания базы данных с помощью postgresql на sqlalchemy? - PullRequest
0 голосов
/ 08 января 2019

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

# To create the tables we need these packages
import sqlalchemy as sql
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine 

# Creating the base.
Base = declarative_base()

# The tables would be defined here.

# Create an engine that stores data in the given directory.
path = '/path/'
engine = create_engine('sqlite:///'+path+'ARsdb.db')    

# Create all tables in the engine.
Base.metadata.create_all(engine)

Который затем сделает файл базы данных по указанному пути. С другой стороны, postgresql использует другой синтаксис для движка:

# default
engine = create_engine('postgresql://user:pass@localhost/mydatabase')

# psycopg2
engine = create_engine('postgresql+psycopg2://user:pass@localhost/mydatabase')

как объяснено в этом вопросе или документации . Однако мне не ясно, могу ли я указать путь для этого файла базы данных, который будет записан как на sqlite. Когда я создал базу данных, используя строку базы данных как:

postgresql://user:password@localhost:5432/databasepath/database_name

для фиктивной базы данных Я не смог найти файл database_name в пути databasepath . Могу ли я указать путь для файла, который будет создан в конце концов, или он останется ограниченным сервером, созданным во время установки postgresql?

Спасибо!

1 Ответ

0 голосов
/ 08 января 2019

Нет, это невозможно.

Postgres хранит данные для всех баз данных кластера (он же "экземпляр") внутри одного каталога , который указывается при создании Postgres экземпляр (через initdb).

Кроме того, вы не можете создать базу данных, подключившись к ней. Сначала нужно выполнить команду create database, только после этого вы сможете подключиться к ней.

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