簡體   English   中英

使用 Google Cloud Spanner 設置 Alembic 時出現問題

[英]Problems setting up Alembic with Google Cloud Spanner

我正在嘗試將 Alembic 設置為與 Google Cloud Spanner 一起使用,但無論我嘗試什么,在嘗試運行簡單的“ alembic upgrade head ”時都會出現以下錯誤之一:

  • sqlalchemy.exc.NoSuchModuleError:無法加載插件:sqlalchemy.dialects:spanner
  • KeyError:“扳手+扳手”

到目前為止我已經嘗試過:

在 sqlalchemy.url 的 alembic.ini 中:

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

在 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>")

我嘗試過使用最新版本的 SqlAlchemy/Alembic/SqlAlchemy-Spanner,以及早期版本(sqlalchemy 1.3 和其他匹配版本)

我嘗試使用 PyPi 和 GitHub 的 sqlalchemy-spanner (git+https://github.com/googleapis/python-spanner-sqlalchemy.git@v1.2.0#egg=sqlalchemy-spanner)

到目前為止沒有執行任何代碼,只是試圖讓 Alembic 能夠連接到實例。 我擁有所有必需的權限(項目所有者)。

據我所知,SqlAlchemy 的扳手方言似乎沒有正確安裝。 我試圖從頭開始一個新項目,以消除舊的安裝干擾我的設置,但沒有運氣。

我什至嘗試通過 env.py 手動注冊方言:

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

我絕不是 Python 專家(與 Python 合作了一年,在做.Net/c# 10 年后現在),但我在這里沒有想法了。 任何幫助將不勝感激。

我想這個問題可以通過與 Google Cloud Spanner 團隊的交談來解決。 如果沒有,總結一下,這里是解釋。

sqlalchemy_spanner現在支持 SQLAlchemy 1.3 和 1.4 版本,它們使用不同的 styles 的連接 URL。 它在docs中有描述。

如果sqlalchemy_spanner是由pip install sqlalchemy_spanner的,則應該正確注冊方言。 如果 package 是從 GitHub 存儲庫安裝的,則應手動運行 package setup.py文件以注冊方言。

在使用 Alembic 時,連接 URL 和方言名稱仍然必須遵循自己的 SQLAlchemy 版本的樣式。 這意味着在env.py (參見 repo 中的示例)和alembic.ini中:

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

因此,如果出現類似錯誤,首先要檢查三個位置:連接 URL 和 Alembic 文件env.pyalembic.ini - 所有這些都必須使用相同的方言 id 才能使其正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM