博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Python读取Google Spreadsheet的内容并写入到mangodb
阅读量:6974 次
发布时间:2019-06-27

本文共 3618 字,大约阅读时间需要 12 分钟。

昨天突发奇想, 现在google docs里的spreadsheet很强大, 如果我的网站数据不是很大, 那么我通过spreadsheet来保存我的数据不是一件很方便的事情吗, 事实上, 我的网站也只是保存一些产品的数据, 而我的产品又不可能像eBay那样有许多, 那么我就试试把数据保存在Google Spreadsheet里吧。 

目标有了, 工具呢? 去看看吧, 嗯, 它还躺在Google Labs里面, 不过也还不错, 那么它支持那些语言呢?因为我对Python很有爱, 而且这个API也支持Python, perfect!!! 好了, 开始动手。 如果要使用这个API, 那么第一步自然是下载一个叫东西。 使用这个client的前提是你要有Python的环境, 并且包含httplib和urllib这两个模块, 还好python2.6都内置了这两个模块, 如果你使用2.6这个版本的话, 直接从上面这个link下载, 安装就好了。 

 python setup.py install

进入python, 我们做一些简单的实验。

>>>
 
import
 gdata.spreadsheet.service as service
>>>
 client 
=
 service.SpreadsheetsService()
>>>
 client.email 
=
 
"
yourgoogleaccount@domain.com
"
  
#
你的app帐号或者gmail帐号
>>>
 client.password 
=
 
"
********
"
  
#
这个就是密码的东西, 你当然看不见了
>>>
 client.source 
=
 
"
iMaQ-Documents-v1
"
 
#
这个不好解释, 下面大概描述一下
>>>
 client.ProgrammaticLogin() 
#
利用上面的信息登陆到Google

嗯, 很好, 我in了 xD, 接下来, 我要知道我的Documents里有哪些spreadsheet, 废话, 我当然知道, 我可以直接进到我的documents里去看我有哪些表格, 我们就以里面自带的一个demo的文档做实验, 那个叫做internal-Contact的东东。 首先如果要访问这个文档的话, 我们要知道这个文档的key

>>>
 docs 
=
 client.GetSpreadsheetsFeed()
>>>
 
for
 i, entry 
in
 enumerate(docs.entry):
...     
print
 entry.title.text , entry.id.text
... 
internal 
-
 Contact http:
//
spreadsheets.google.com
/
feeds
/
spreadsheets
/
private
/
full
/
blablablabla__Y1ax999C
products http:
//
spreadsheets.google.com
/
feeds
/
spreadsheets
/
private
/
full
/
blablablablabla_Z1fSm
-
nXQ
>>>

 看到了吗? 列出了两个我这个帐号可以访问的文档, entry.title.text就是文档的名字, entry.id.text就是这个文档的feed地址, 是你后面调用api的时候直接访问这个文档的地址, 里面的/full/后面的一串blablabla就是这个文档的key. 有了这个key, 我们就可以直接去访问这个文档里的内容啦, 首先看看这个表格里有几个sheet。

>>>
 sheet 
=
 client.GetWorksheetsFeed(key)
>>>
 
for
 i, entry 
in
 enumerate(sheet.entry):
...     
print
 entry.title.text, entry.id.text
... 
Sheet1 http:
//
spreadsheets.google.com
/
feeds
/
worksheets
/
blablablablabla__Y1ax999C
/
private
/
full
/
od1
>>>

 结果给出只有一个Sheet1, 后面的那个是workbook的key和这个sheet的id, 这里是od1, 现在我们就可以去看看这个sheet里的内容了

>>>
 table 
=
 client.GetListFeed(key,wksht_id)
>>>
 
for
 i, entry 
in
 enumerate(table.entry):
...     
for
 column 
in
 entry.custom:
...             
print
 
"
[%s:%s]
"
%
(column, entry.custom[column].text)
... 
[comment:I
'
m commenting on this contact form]
[timestamp:
2
/
15
/
2010
 
8
:
07
:
30
]
[name:Sarah]
[email:garsides@gmail.com]
[comment:I want to join the group.]
[timestamp:
2
/
15
/
2010
 
13
:
06
:
33
]
[name:Larisa]
[email:info@landviser.com]
[comment:
is
 it wotk]
[timestamp:
2
/
15
/
2010
 
17
:
23
:
55
]
[name:Larisa]
[email:info@landviser.com]
[comment:Test]
[timestamp:
2
/
16
/
2010
 
12
:
17
:
22
]
[name:Jeremy]
... 
#
后面的省略掉了

内容都出来了, 好多阿 - . -!

 

看来访问内容还是很容易的, 接下来, 我们就可以把内容写到可爱的里 去了, 如何使用mongodb就不是本文所涉及的主题了, 既然内容已经被都出来了, 你可以将这些内容写到你喜欢的地方去, big table, mysql, oracle, 或者txt里。 使用mongodb的前提是你已经有了mongo的环境并且装好了python driver, 叫pymongo, 那么下面就接着继续

>>>
 
from
 pymongo 
import
 Connection
>>>
 db 
=
 Connection(
"
localhost
"
).test.contacts
>>>
 
for
 i, entry 
in
 enumerate(table.entry):
...     obj 
=
 {}
...     
for
 col 
in
 entry.custom:
...             obj[col] 
=
 entry.custom[col].text
...     db.save(obj)
... 
ObjectId(
'
4c2f9bad092ce508b2000000
'
)
ObjectId(
'
4c2f9bad092ce508b2000001
'
)
ObjectId(
'
4c2f9bad092ce508b2000002
'
)
ObjectId(
'
4c2f9bad092ce508b2000003
'
)
ObjectId(
'
4c2f9bad092ce508b2000004
'
)
ObjectId(
'
4c2f9bad092ce508b2000005
'
)
ObjectId(
'
4c2f9bad092ce508b2000006
'
)
ObjectId(
'
4c2f9bad092ce508b2000007
'
)
ObjectId(
'
4c2f9bad092ce508b2000008
'
)
ObjectId(
'
4c2f9bad092ce508b2000009
'
)
ObjectId(
'
4c2f9bad092ce508b200000a
'
)
ObjectId(
'
4c2f9bad092ce508b200000b
'
)
ObjectId(
'
4c2f9bad092ce508b200000c
'
)
...

 好了, 刚才那个contacts里的内容就写到mongodb里去了, 你可以进到mongo的console里去

use testdb.contacts.find()

 

 

转载于:https://www.cnblogs.com/Stephen/archive/2011/03/06/python-sync-gspreadsheet-mongodb.html

你可能感兴趣的文章
【转】Netty系列之Netty高性能之道
查看>>
CAM350对比两个gerber之间的差异
查看>>
New Concept English three (56)
查看>>
for 循环
查看>>
lamp+nginx代理+discuz+wordpress+phpmyadmin搭建
查看>>
Hash(LCP) || 后缀数组 LA 4513 Stammering Aliens
查看>>
python全栈开发 * 进程之间的通信,进程之间数据共享 * 180726
查看>>
[HNOI2007]分裂游戏
查看>>
JSON数据传递
查看>>
Android Studio 小技巧(2):AS中Button文字默认大写的问题
查看>>
用Python将word文件转换成html(转)
查看>>
移动widget开发
查看>>
http协议相关参考资料
查看>>
牛客寒假6-B.煤气灶
查看>>
[Java基础]常用IO操作之字节流
查看>>
TRUNC函数的用法
查看>>
嗯,农民伯伯的2014就是这些
查看>>
预约系统(八) 管理页面--会议室管理
查看>>
HDU 1286(欧拉函数||筛选法)
查看>>
Nginx初识
查看>>