我按照此链接中的代码将我的 fastapi 项目连接到 Cloud SQL 1
from sqlalchemy import create_engine
from sqlalchemy.engine import Engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from google.cloud.sql.connector import Connector
# helper function to return SQLAlchemy connection pool
def init_connection_pool(connector: Connector) -> Engine:
# Python Connector database connection function
def getconn():
conn = connector.connect(
"project:region:instance-name", # Cloud SQL Instance Connection Name
"pg8000",
user="my-user",
password="my-password",
db="my-database",
ip_type="public" # "private" for private IP
)
return conn
SQLALCHEMY_DATABASE_URL = "postgresql+pg8000://"
engine = create_engine(
SQLALCHEMY_DATABASE_URL , creator=getconn
)
return engine
# initialize Cloud SQL Python Connector
connector = Connector()
# create connection pool engine
engine = init_connection_pool(connector)
# create SQLAlchemy ORM session
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
我想按照同样的方法将 alembic 连接到 Cloud SQL。据我所知,我应该在 alembic.ini 文件中设置 sqlalembic.url 。我没有记录如何与谷歌连接器连接。有办法吗?
我运行
cloud-sql-proxy PROJECT_NAME:REGIN:SQLDB
,我可以很好地完成该项目。
https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/blob/main/README.md
以下是使用 Google Cloud SQL Python 连接器将 Alembic 连接到 Cloud SQL 的要点:
alembic.ini:
sqlalchemy.url
: postgresql+pg8000://{user}:{password}@localhost:{port}/{database}
将占位符替换为您的 Cloud SQL 凭据和详细信息。
localhost
指向本地运行的 cloud-sql-proxy
。
可选:重用连接池(env.py):
init\_connection\_pool
。使用从 init\_connection\_pool
.云 SQL 代理:
./cloud-sql-proxy --address=0.0.0.0 --port=1234 <project>:<region>:<instance-name>
记住:
使用环境变量来获取敏感信息。
连接字符串中的localhost指向本地cloud-sql-proxy。
参考: