gpt4 book ai didi

python - 使用 PyMongo 将多个文本文件加载到 MongoDB

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:02 24 4
gpt4 key购买 nike

我目前正在尝试将几个 文本文件加载到 MongoDB 中(它们是 JSON 格式)。

我尝试使用 OS walk,但我似乎遇到了麻烦。我目前的方法是:

>>> 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)
...

用于插入单个推文。我希望能够打开多个文件并运行同一段代码,即自动将 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)

这会遍历“~/Tweets/*.txt”中的所有文件名,打开它,并将文件中的 1 条或多条推文加载到 Python 字典中——注意 .load 的使用而不是 .loads - 区别在于 .load() 接受一个类似文件的对象,而 .loads() 接受一个字符串。然后对于每条推文,将其插入到数据库中。 (注意我使用了 db.tweets.insert 而不是 tweets = db.tweets 因为我个人发现 'db' 前缀提醒它是一个 DB op 而不是一些其他对象)

关于您对 MongoDB 的理解:DB 的/集合/文档 - 是的,您是对的。

关于python - 使用 PyMongo 将多个文本文件加载到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com