我在Google Cloud Platform上的App Engine中有一段Python代码,它从Firebase获取数据并将其格式化为元组列表,其中每一行指定数据库的一行。我想将此数据插入到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.
# ...
) 发布于 2020-01-30 00:38:46
https://cloud.google.com/sql/docs/mysql/connect-app-engine
如果你正在尝试做的事情中有任何漏洞,这个文档应该会有所帮助。
但可能的问题是,App Engine使用服务帐户来授权连接到其他GCP产品。请确保你使用的App Engine服务帐户具有连接权限。IAM角色为以下角色之一:
Cloud SQL Client (这可能是您需要的) Cloud SQL Editor Cloud SQL Admin
发布于 2020-01-30 01:37:07
由于您使用的是App Engine Standard,为了连接到云SQL实例,您需要设置VPC访问连接器并配置您的应用程序以使用它。
您可以在Docs中找到如何执行此操作
如果您灵活使用App Engine,则不需要创建VPC Access Connector。相反,您可以使用use UNIX Domain Sockets
发布于 2020-12-17 17:55:13
其他答案没有解释如何插入,所以...
首先对vpc连接器执行add操作。
然后你可能需要add in 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()https://stackoverflow.com/questions/59949129
复制相似问题