简体   繁体   English

使用 Google Cloud Spanner 设置 Alembic 时出现问题

[英]Problems setting up Alembic with Google Cloud Spanner

I am trying to set up Alembic to work with Google Cloud Spanner, but no matter what I try I end up with one of the following errors when attempting to run a simple " alembic upgrade head ":我正在尝试将 Alembic 设置为与 Google Cloud Spanner 一起使用,但无论我尝试什么,在尝试运行简单的“ alembic upgrade head ”时都会出现以下错误之一:

  • sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:spanner sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:spanner
  • KeyError: 'spanner+spanner' KeyError:“扳手+扳手”

I have tried so far:到目前为止我已经尝试过:

In alembic.ini for sqlalchemy.url:在 sqlalchemy.url 的 alembic.ini 中:

spanner:///projects/<project>/instances/<instance>/databases/<db>
spanner+spanner:///projects/<project>/instances/<instance>/databases/<db>

In env.py:在 env.py 中:

config.set_main_option("sqlalchemy.url", "spanner:///projects/<project>/instances/<instance>/databases/<db>")
config.set_main_option("sqlalchemy.url", 
"spanner+spanner:///projects/<project>/instances/<instance>/databases/<db>")

I have tried with latest versions of SqlAlchemy/Alembic/SqlAlchemy-Spanner, as well as earlier versions (sqlalchemy 1.3 and matching versions of the others)我尝试过使用最新版本的 SqlAlchemy/Alembic/SqlAlchemy-Spanner,以及早期版本(sqlalchemy 1.3 和其他匹配版本)

I have tried using sqlalchemy-spanner from PyPi and from GitHub (git+https://github.com/googleapis/python-spanner-sqlalchemy.git@v1.2.0#egg=sqlalchemy-spanner)我尝试使用 PyPi 和 GitHub 的 sqlalchemy-spanner (git+https://github.com/googleapis/python-spanner-sqlalchemy.git@v1.2.0#egg=sqlalchemy-spanner)

There is no code being executed so far, just trying to get Alembic to be able to connect to the instance.到目前为止没有执行任何代码,只是试图让 Alembic 能够连接到实例。 I have all required permissions (project owner).我拥有所有必需的权限(项目所有者)。

From what I can see, it appears that the spanner dialect for SqlAlchemy isn't installed properly.据我所知,SqlAlchemy 的扳手方言似乎没有正确安装。 I have tried to start a new project from scratch to elimiate old installations messing with my setup but no luck.我试图从头开始一个新项目,以消除旧的安装干扰我的设置,但没有运气。

I've even tried to register the dialect manually through env.py with:我什至尝试通过 env.py 手动注册方言:

registry.register("spanner.spanner", "google.cloud.sqlalchemy_spanner", "SpannerDialect")

I'm by no means a Python expert (worked with Python for one year now after doing.Net/c# for 10 years), but I'm running out of ideas here.我绝不是 Python 专家(与 Python 合作了一年,在做.Net/c# 10 年后现在),但我在这里没有想法了。 Any help would be highly appreciated.任何帮助将不胜感激。

I suppose the issue is solved by a talk with Google Cloud Spanner team.我想这个问题可以通过与 Google Cloud Spanner 团队的交谈来解决。 In case if not, and to summarize, here is the explanation.如果没有,总结一下,这里是解释。

sqlalchemy_spanner now supports SQLAlchemy 1.3 and 1.4 versions, which are using different styles of connection URLs. sqlalchemy_spanner现在支持 SQLAlchemy 1.3 和 1.4 版本,它们使用不同的 styles 的连接 URL。 It's described in the docs .它在docs中有描述。

If sqlalchemy_spanner was installed by pip install sqlalchemy_spanner , the dialect should be registered correctly.如果sqlalchemy_spanner是由pip install sqlalchemy_spanner的,则应该正确注册方言。 If the package was installed from the GitHub repo, one should manually run the package setup.py file to register the dialect.如果 package 是从 GitHub 存储库安装的,则应手动运行 package setup.py文件以注册方言。

When one is working with Alembic, connection URLs and the dialect name still have to follow the style of one's SQLAlchemy version.在使用 Alembic 时,连接 URL 和方言名称仍然必须遵循自己的 SQLAlchemy 版本的样式。 That means in env.py (see an example in the repo) and in alembic.ini :这意味着在env.py (参见 repo 中的示例)和alembic.ini中:

[alembic]
sqlalchemy.url = spanner+spanner:///projects/{project}...

Thus, if a similar error is failing, there are three places to check first: connection URLs and Alembic files env.py and alembic.ini - all must use the same dialect id to make it all work.因此,如果出现类似错误,首先要检查三个位置:连接 URL 和 Alembic 文件env.pyalembic.ini - 所有这些都必须使用相同的方言 id 才能使其正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spark JDBC 连接到 Google Cloud Spanner 失败 - Spark JDBC connection to Google Cloud Spanner failure JDBC 连接到 Google Cloud Spanner 参数 - JDBC connection to Google Cloud Spanner parameters Google 专业云架构师考试 - BigQuery 与 Cloud Spanner - Google Professional Cloud Architect Exam - BigQuery vs Cloud Spanner 无法在谷歌云上的扳手中查看失败查询的错误日志 - unable to see Error logs for failed queries in spanner on google cloud Google Cloud Spanner 节点库不接受参数化 SQL - Google Cloud Spanner Node Library won't accept parameterized SQL 类似于 PL/SQL 或 T-SQL 的 Google Cloud Spanner 脚本? - Google Cloud Spanner scripting similar to PL/SQL or T-SQL? 无论定义的索引如何,Google Cloud Spanner 都会进行全表扫描 - Google cloud spanner do a full table scan regardless of the definced index 调查 Google Cloud Spanner 延迟 - 二级索引是否锁定? - Investigating Google Cloud Spanner Latency - are secondary indexes locking? 在 Cloud Spanner 中存储 UUID - Storing a UUID in Cloud Spanner Google Cloud Spanner 通过 Cloud Data Fusion 或其他方式实时更改数据捕获到 PubSub/Kafka - Google Cloud Spanner real time Change Data Capture to PubSub/Kafka through Cloud Data Fusion or Others
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM