【发布时间】:2021-11-04 18:19:29
【问题描述】:
问题
我们正在尝试通过SQLAlchemy 版本1.3.23 和python-spanner-sqlalchemy 连接到Cloud Spanner。使用Poetry 进行依赖管理,sqlalchemy-spanner 已被添加(这就是项目的设置方式):
sqlalchemy = "~1.3"
sqlalchemy-spanner = { git="https://github.com/cloudspannerecosystem/python-spanner-sqlalchemy.git", tag="v0.1.0" }
当create_engine 被调用时
create_engine("spanner:///projects/my-project/instances/my-instance/databases/my-db")
我收到以下错误
class 'sqlalchemy.exc.NoSuchModuleError'>", "NoSuchModuleError(\"Can't load plugin: sqlalchemy.dialects:spanner\")
尝试
注册表
我尝试添加(如 python-spanner-sqlalchemy test 包中的 conftest.py 文件所示)
from sqlalchemy.dialects import registry
registry.register("spanner", "google.cloud.sqlalchemy_spanner", "SpannerDialect")
在调用create_engine之前,会导致如下错误:
class 'ModuleNotFoundError'>", "ModuleNotFoundError(\"No module named 'google.cloud.sqlalchemy_spanner'\")
这让我觉得插件方言没有正确添加,因为在setup.py 的第 49 行中,为方言建立了连接:
entry_points={
"sqlalchemy.dialects": [
"spanner = google.cloud.sqlalchemy_spanner:SpannerDialect"
]
},
通过python setup.py install安装
在扳手项目的README 中,它说克隆存储库并通过python setup.py install 安装。我执行了这一步,但不确定如何将它导入我当前的项目或让我的项目知道这个库。我以前从来没有手动安装过python包,如果有人可以在这里提供任何帮助,我将不胜感激。
我做了什么尝试:
- 按上述方式安装库
- 尝试通过诗歌添加依赖项:
poetry add sqlalchemy-spanner。得到Could not find a matching version of package sqlalchemy-spanner - 尝试通过 pip 定位库:
pip install sqlalchemy-spanner==通常会列出可用的包版本。
我不确定最后两个项目符号中的任何一个是否真的检查了本地安装的软件包。甚至不确定我在说什么。
更新
- 因此,我能够使用
pip install /path/to/project安装本地版本的python-spanner-sqlalchemy,这可以正常工作,但在加载方言时仍然遇到同样的问题。 - 我用
from google.cloud.sqlalchemy_spanner import SpannerDialect在上面的代码(在注册表部分)中添加了SpannerDialect的导入。 PyCharm 为我自动完成了这项工作,这向我表明该软件包已成功安装并且可用。但是我在运行时收到了ModuleNotFoundError的google.cloud.sqlalchemy_spanner。 - 我在我的项目根目录中运行了
python,并从repl 中导入了SpannerDialect,没有出现任何错误。
【问题讨论】:
标签: sqlalchemy google-cloud-spanner