从colab直接操作Google驱动器中的sqlite3格式数据

时间:2017-11-19 08:27:19

标签: google-drive-api google-colaboratory

从colaboratory,是否有可能直接操纵谷歌驱动器中的sqlite 3格式数据?  如果您上传它是可能的,但在谷歌驱动器中使用它很方便。

3 个答案:

答案 0 :(得分:8)

您可以通过将Google云端硬盘安装为FUSE文件系统来从云端硬盘加载文件目录。

以下是一个例子: https://colab.research.google.com/notebook#fileId=1srw_HFWQ2SMgmWIawucXfusGzrj1_U0q

没有正式的Google Drive FUSE文件系统。但是,第三方已经编写了几个开源FUSE + Drive库。上面的示例笔记本使用google-drive-ocamlfuse。笔记本显示了三件事:

  1. 在Colab VM中安装Drive FUSE包装器。
  2. 使用FUSE包装器验证驱动器和安装驱动器。
  3. 在新安装的Drive支持的文件系统中列出并创建文件。

答案 1 :(得分:1)

我认为这不可能。

笔记本电脑在新的VM上运行,无法直接读取/搜索/写入sqlite文件。它只能使用Drive API下载/上传整个文件。

在Android上,您可以通过Google Drive Android API执行此操作,但不能在普通虚拟机上执行此操作。

答案 2 :(得分:0)

首先,将database.sqlite和所需的csv文件(在我的情况下为Reviews.csv)上传到Google云端硬盘。

然后,您需要使用以下命令在Google Colab中挂载驱动器:

from google.colab import drive
drive.mount('/content/gdrive')

这将导致以下输出:

Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly

Enter your authorization code:

点击URL,该链接将导致一个新标签,该标签显示您的Google帐户,以向Google云端硬盘文件流提供某些特权:

Choose an account
to continue to Google Drive File Stream

您必须选择用于登录Google Colab的相同Google帐户。然后点击“允许”按钮。这将导致另一个页面显示字母数字代码。复制代码并将其粘贴到文本区域(输入授权代码:)。

因此,将显示有关已安装驱动器的消息:

··········
Mounted at /content/gdrive

现在单击文件夹图标(在“显示代码段窗格”下面,位于代码单元的左侧),您可以看到gdrive文件夹。您的Google云端硬盘-我的云端硬盘将位于gdrive内。现在,单击存储database.sqlite文件的所需文件夹。右键单击它,然后选择“复制路径”。

您复制的路径应粘贴到以下命令的路径链接中:

con = sqlite3.connect('paste the path you copied')

例如,如果database.sqlite驻留在“ / content / gdrive /我的驱动器/ Colab Notebooks / database.sqlite”中,则命令将如下所示:

con = sqlite3.connect('/content/gdrive/My Drive/Colab Notebooks/database.sqlite')

现在,您可以运行一些SQL查询来检查一切是否正常:

filtered_data = pd.read_sql_query("""
SELECT * 
FROM Reviews
WHERE Score != 3
""", con)
print(filtered_data.head())