Noc*_*Noc 1 python mongodb pymongo
我目前正在尝试将几个文本文件加载到MongoDB中(它们是JSON格式).
我尝试使用操作系统,但我似乎遇到了麻烦.我目前的方法是:
>>> import pymongo
>>> import os
>>> import json
>>> from pymongo import Connection
>>> connection = Connection()
>>> db = connection.Austin
>>> collection = db.tweets
>>> collection = db.tweet_collection
>>> db.tweet_collection
Collection(Database(Connection('localhost', 27017), u'Austin'), u'tweet_collection')
>>> collection
Collection(Database(Connection('localhost', 27017), u'Austin'), u'tweet_collection')
>>> tweets = db.tweets
>>> tweet = open(os.path.expanduser('~/Tweets/10_7_2012_12:09-Tweets.txt'),'r')
>>> for line in tweet:
... d = json.loads(line)
... tweets.insert(d)
...
Run Code Online (Sandbox Code Playgroud)
用于插入单个推文.我希望能够打开多个文件并运行相同的代码片段,即将JSON转换为python词典的for循环,并自动将其插入到集合中.
有没有人有一个如何做到这一点的完整例子,并附有解释?
当我们讨论这个主题时,我试图使用对数据库理解不够的MongoDB(愚蠢和愚蠢,我知道),但MongoDB可以同时支持多个数据库实例,并存储集合,这些是集合的文件,你可以插入单个文件,对吗?
(另外,请忽略集合推文和tweet_collection之间的不一致..我只是在试验以获得更好的理解)
未经测试
from glob import iglob
import os.path
import pymongo
import json
for fname in iglob(os.path.expanduser('~/Tweets/*.txt')):
with open(fname) as fin:
tweets = json.load(fin)
for tweet in tweets:
db.tweets.insert(tweet)
Run Code Online (Sandbox Code Playgroud)
这将循环遍历'〜/ Tweets/*.txt'中的所有文件名,打开它,并将一个或多个推文从文件加载到Python字典中 - 注意使用.load而不是.loads- 差异是.load()采用类似文件的对象虽然.loads()需要一个字符串.然后,对于每条推文,将其插入数据库.(注意我已经使用db.tweets.insert而不是tweets = db.tweets因为我个人发现'db'前缀提醒它是一个DB操作而不是其他一些对象)
至于你对MongoDB的理解:数据库/馆藏/文件 - 是的,你是对的.
| 归档时间: |
|
| 查看次数: |
4722 次 |
| 最近记录: |