Google Cloud SQL - 我可以直接使用 SQLAlchemy 访问数据库吗 - 而不是在本地
Google Cloud SQL - Can I directly access database with SQLAlchemy - not locally
我正在尝试直接访问 Google 云 SQL 并在那里创建 table。我想使用尽可能少的服务(保持简单),因此我真的不想使用 Cloud SDK。
我想使用类似的东西,我看到 here。我试图复制它,但最终出现错误。
AttributeError: module 'socket' has no attribute 'AF_UNIX'
对于所有这些,我使用 Python 和 sqlalchemy 和 pymysql
我真的不知道如何调试它,因为我刚开始使用它几个小时,但我认为问题可能出在 URL 或环境变量(app.yamp 文件,它我创建)。
我认为我已经安装了我需要的所有依赖项
db_user = os.environ.get("db_user")
db_pass = os.environ.get("db_pass")
db_name = os.environ.get("db_name ")
cloud_sql_connection_name = os.environ.get("cloud_sql_connection_name ")
db = sqlalchemy.create_engine(
# Equivalent URL:
# mysql+pymysql://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
sqlalchemy.engine.url.URL(
drivername='mysql+pymysql',
username=db_user,
password=db_pass,
database=db_name,
query={
'unix_socket': '/cloudsql/{}'.format(cloud_sql_connection_name)
}
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800,
)
with db.connect() as conn:
conn.execute(
"CREATE TABLE IF NOT EXISTS votes "
"( vote_id SERIAL NOT NULL, time_cast timestamp NOT NULL, "
"candidate CHAR(6) NOT NULL, PRIMARY KEY (vote_id) );"
)
我不使用 db_user 等作为实际值。这些只是例子。
它应该成功通过并在 Google SQL
中创建一个 table
Can I directly access database with SQLAlchemy - not locally
您正在指定一个 unix 套接字 /cloudsql/{}
。这需要您在本地计算机上设置云 SQL 代理。
要直接访问 Cloud SQL,您需要为 Cloud SQL 指定 Public IP 地址。在调用函数 sqlalchemy.engine.url.URL
时,指定主机和端口参数并删除查询参数。
我正在尝试直接访问 Google 云 SQL 并在那里创建 table。我想使用尽可能少的服务(保持简单),因此我真的不想使用 Cloud SDK。 我想使用类似的东西,我看到 here。我试图复制它,但最终出现错误。
AttributeError: module 'socket' has no attribute 'AF_UNIX'
对于所有这些,我使用 Python 和 sqlalchemy 和 pymysql
我真的不知道如何调试它,因为我刚开始使用它几个小时,但我认为问题可能出在 URL 或环境变量(app.yamp 文件,它我创建)。 我认为我已经安装了我需要的所有依赖项
db_user = os.environ.get("db_user")
db_pass = os.environ.get("db_pass")
db_name = os.environ.get("db_name ")
cloud_sql_connection_name = os.environ.get("cloud_sql_connection_name ")
db = sqlalchemy.create_engine(
# Equivalent URL:
# mysql+pymysql://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
sqlalchemy.engine.url.URL(
drivername='mysql+pymysql',
username=db_user,
password=db_pass,
database=db_name,
query={
'unix_socket': '/cloudsql/{}'.format(cloud_sql_connection_name)
}
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800,
)
with db.connect() as conn:
conn.execute(
"CREATE TABLE IF NOT EXISTS votes "
"( vote_id SERIAL NOT NULL, time_cast timestamp NOT NULL, "
"candidate CHAR(6) NOT NULL, PRIMARY KEY (vote_id) );"
)
我不使用 db_user 等作为实际值。这些只是例子。 它应该成功通过并在 Google SQL
中创建一个 tableCan I directly access database with SQLAlchemy - not locally
您正在指定一个 unix 套接字 /cloudsql/{}
。这需要您在本地计算机上设置云 SQL 代理。
要直接访问 Cloud SQL,您需要为 Cloud SQL 指定 Public IP 地址。在调用函数 sqlalchemy.engine.url.URL
时,指定主机和端口参数并删除查询参数。