我需要在Google云端存储空间的一个存储桶中用MySQL以csv格式编写结果集。
按照说明here,我创建了以下示例代码:
import cloudstorage
from google.appengine.api import app_identity
import db # My own Mysql wrapper
dump = db.get_table_dump(schema) # Here I made a simples SQL SELECT and fetchall()
bucket_name = app_identity.get_default_gcs_bucket_name()
file_name = "/" + bucket_name + "/finalfiles/" + schema + "/" +"myfile.csv"
with cloudstorage.open(file_name, "w") as gcsFile:
gcsFile.write(dump)
它不起作用'因为write
需要一个字符串参数而dump
是来自fetchall()
的元组元组。
我不能使用this approach(或类似的)因为我无法在GAE环境中编写文件而且我也无法从here之类的元组创建CSV字符串,因为它的大小o我的结果集(实际上,我尝试了它并且它需要很长时间并且在完成之前超时)。
所以,我的问题是,这是从MySQL获取结果集并将其作为CSV保存在Google云存储桶中的最佳方式吗?
答案 0 :(得分:1)
我刚刚遇到了与PHP相同的问题。我最终使用cloud sql api(https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/)和以下工作流程:
我们有一个工作,每晚在6个表上执行这些步骤(以及使用/ import命令导入)并且还没有看到任何问题。唯一要记住的是,一次只能在一个数据库实例上运行一个操作。要解决这个问题,您应该从操作列表端点(https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/operations/list)中的顶部项目确认数据库已准备就绪,然后再发出任何命令。