python-3.x - 可以指定路径以在 sqlalchemy 上使用 postgresql 创建数据库吗?
问题描述
我目前正在尝试使用 sqlalchemy 创建一个 postgresql 数据库,并希望在外部硬盘驱动器中创建这个数据库文件。我可以使用 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
对于模拟数据库,我在databasepath路径中找不到database_name文件。我可以为要创建的文件指定一个路径,还是它们被限制在安装 postgresql 期间创建的服务器中?
谢谢!
解决方案
不,那是不可能的。
Postgres 将集群的所有数据库(又名“实例”)的数据存储在一个目录中,该目录是在创建 Postgres 实例期间指定的(通过)。initdb
此外,您无法通过连接来创建数据库。您需要先运行该create database
命令,然后才能连接到它。
推荐阅读
- java - 如何在我的 Java 程序中修复“java.lang.ClassNotFoundException”?
- javascript - 如何在类组件 React 之外访问 props
- python - python数组索引未定义
- nginx - nginx将除少数之外的所有路由到文件夹
- sockets - 引发 TimeoutError:[Errno 110] 连接超时,而 sockt.send_all(request)
- php - 包含超过1个数据的列(fk)(这是其他表的pk)
- c# - 如何使用 SqlCommand C# 向 SQL 查询添加静态参数
- google-cloud-platform - 如何在不滚动浏览所有日志的情况下查看最新的 Google Stackdriver 日志
- r - 将一个情节图作为插图添加到另一个情节图
- linux - 有没有办法在 linux 中为程序保存唯一标识符?