首页 > 解决方案 > 从 App Engine 的 python 代码将数据插入 Cloud SQL for MySQL

问题描述

我在 Google Cloud Platform 上的 App Engine 中有一个 Python 代码,它从 Firebase 获取数据并将其格式化为 tuples 列表,其中每一行指定数据库的一行。我想将此数据插入 Cloud SQL for MySQL 中。我已经生成了一个云服务帐户,并且还使用 sqlalchemy 将其连接到我的 Cloud SQL for MySQL,但我无法理解如何将行插入 Cloud SQL。

我已使用 Cloud SQL 网站上的以下代码并替换了所需的元素,但如何插入 Cloud SQL for MySQL?

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)},
    ),
    # ... Specify additional properties here.
    # ...
) 

标签: python-3.xgoogle-app-enginegoogle-cloud-platformsqlalchemygoogle-cloud-sql

解决方案


其他答案没有解释如何插入,所以......

首先添加vpc 连接器。

然后您可能需要添加appengine 连接,无论您的 IP 是什么都添加为公共 IP(对我来说,这修复了Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory错误)。

然后插入:

metadata = MetaData(bind=engine)
your_table= Table('yourtable', metadata, autoload=True)
i = insert(your_table)
i = i.values({
    "your_field": some_value
    })

Session = sessionmaker(bind=engine)
session = Session()
session.execute(i)
session.commit()

推荐阅读