python-3.x - 需要使用python的dbase连接的概述解释
问题描述
我使用 python 和 postgreql 已经一年多了。我可以通过盲目使用各种库来连接和使用 postgres 数据库。但是每当我改变平台(最近从 macOS 笔记本电脑到远程 ubuntu 服务器)时,我都会经历一天左右的时间来尝试让库工作,例如。我在某些模块中使用了“pyodbc”,但是当我将代码迁移到服务器时,我不得不切换到“pg8000”,因为这些模块一直在抛出错误。
有人可以解释或指向一个链接,解释 python 如何连接到 dB 的吗?例如,为什么我需要一个用于“pyodbc”的 MS ODBC 驱动程序来连接到 Azure SQL 或 postgresql,但“pg8000”似乎根本不需要连接到 postgresql?当我移动到 Ubuntu 环境并安装 ODBC 驱动程序时,它们显示在 /etc 和 /opt(用于 MS ODBC)下的根目录下,但也出现在我的 Conda 环境(/anaconda3/envs/)中,我不知道哪个是'ODBC.ini' 的正确选择?
就像我说的,我可以让事情发挥作用,但我真的不明白它们为什么会发挥作用,这意味着我每次处理环境变化时都会浪费时间进行试验。我还没有在网上找到一个解释,它涵盖的不仅仅是一个非常具体的情况,例如。'这里是如何安装我们的驱动程序......'任何帮助将不胜感激。
最终更新:
跟随回应特别是。@Thompson 下图似乎是最终解释,我对在哪里寻找答案有了更好的了解。对于记录 pyodbc,SQLAlchemy 和 pg8000 一直是我选择的工具,除了问题中所述之外没有任何问题。
解决方案
驱动程序特定于数据库。 ODBC
是一个两阶段的过程。有ODBC
驱动程序管理器,然后有允许您与数据库对话的特定于数据库的驱动程序。您不需要ODBC
连接到 Postgresql 服务器。如果你正在使用 Python,你只需要一个 Postgres 驱动程序。你已经找到了pg8000
。我的偏好是psycopg2。
推荐阅读
- ios - 'registerExtension()' 已重命名为 'register()'
- perl - 在 Perl 中 Math::BigInt 与标量的比较
- android - 如何在我的 Android 应用程序中加载 OpenCV 管理器包?
- swift - 在 Swift 5 中使用未解析的标识符“self”
- html - Cube 在 Chrome 和 Firefox 中旋转,但在 Safari 中不旋转
- mysql - 即使禁用了严格模式,MySQL 错误 1055
- java - 在片段内创建第二个 android 导航栏
- git - 使用 git 管理多个项目
- python - 从 pip 或 PYTHONPATH 中删除路径以在单独的 python 目录中安装包
- c# - EF Core:如何注册多个值转换?