Google Cloud SQL - 我可以使用SQLAlchemy直接访问数据库吗 - 而不是本地



我正在尝试直接访问Google Cloud SQL并在那里创建表。我想使用尽可能少的服务(保持简单(,因此我真的不想使用Cloud SDK。我想使用类似的东西,我在这里看到的。我试图复制它,但最终出现了错误。

AttributeError: module 'socket' has no attribute 'AF_UNIX'

对于所有这些,我正在使用带有sqlalchemy和pymysql的Python。

我真的不知道如何调试它,因为我在前几个小时使用它,但我认为问题可能出在 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等作为实际值。这些只是例子。它应该成功通过并在谷歌SQL中创建一个表

我是否可以使用 SQLAlchemy 直接访问数据库 - 而不是本地

您正在指定 unix 套接字/cloudsql/{} 。这要求在本地计算机上设置云 SQL 代理。

若要直接访问云 SQL,需要指定云 SQL 的公共 IP 地址。在调用函数 sqlalchemy.engine.url.URL 时,指定主机和端口参数并删除查询参数。

相关内容

  • 没有找到相关文章

最新更新