如何使用Sqlalchemy连接到特定的Postgres模式?
所以我创建了一个名为“rezerwacja_domkow”的新模式。我可以在Pgadmin 4中看到它。但是整个模式系统让我感到困惑(到目前为止,我只玩过sqlite,它更简单)。我不知道如何连接到它,只能在这个模式下工作。
当我连接到主数据库时,我看到:
List of schemas
Name | Owner
-------------------+-------------------
public | pg_database_owner
rezerwacja_domkow | postgres
tiger | postgres
tiger_data | postgres
topology | postgres
(5 rows)
但是当我尝试使用Sqlalchemy检查器列出表名时,我没有看到任何来自“rezerwacja_domkow”模式的表。我想“连接”到这个特定的模式,并只修改/添加数据到这个模式。非常感谢你的帮助。
2条答案
按热度按时间g2ieeal71#
要连接到特定的模式,首先需要创建数据库URL。这可以如下进行:
“currentSchema”属性引用所选的架构。
接下来,创建引擎:
现在,执行查询:
在端部闭合连接中:
参考-1:https://analyzingalpha.com/connect-postgresql-sqlalchemy
参考文献-2:https://docs.sqlalchemy.org/en/20/core/engines.html
rm5edbpk2#
你可能想花半个小时至少浏览一下official manuals。模式就像目录或任何其他名称空间。就像目录允许你有两个同名的文件“dir1/file1.txt”和“dir2/file2.txt”一样,模式允许你有两个同名的表。
而且,就像目录一样,您需要给予文件的完整路径(“dir1/file1.txt”)或指定其他方法来查找它。在unix/linux系统中,有一个“搜索路径”的概念,它保存在一个变量中,例如保存你的类型“/usr/bin/date”。相反,你可以只输入“日期”,按回车键,你的计算机将按顺序检查
$PATH
变量中的所有目录。同样的情况也适用于PostgreSQL。您可以按表的完整架构引用表:
或者让你的搜索路径来处理它
像大多数其他PostgreSQL设置一样,您可以为特定的数据库或用户(
ALTER DATABASE ...
或ALTER USER ...
)提供search_path
的默认值,或者只是在连接或会话中设置它,就像我上面展示的那样。网上有很多这样做的例子。