【发布时间】:2016-04-23 17:22:09
【问题描述】:
我想使用 Pymongo 将 PLC 中的数据(字符串 - 'Hello World')插入 MongoDB。我无法弄清楚为什么没有创建集合并且没有将'Hello World' 插入其中。你能解释一下我哪里出错了吗?这是我到目前为止编写的代码:
#!/usr/bin/python
import socket
import socket
from pymongo import MongoClient
import datetime
# Connection to server (PLC) PLC's IP addr is .135
server = socket.socket()
host = '10.52.124.135'
port = 4840
server.connect((host, port))
print server.recv(1024)
server.close
#Connection to Client (Mongodb) on port 27017
IP = '10.52.124.186'
PORT = 27017
BUFFER_SIZE = 1024
client = MongoClient('10.52.124.186', 27017)
db = client.RXMMongoDB
collection = db.ABC
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((IP, PORT))
s.listen(1)
# connections loop
while True:
conn, addr = s.accept()
print 'Connection address:',addr
try:
# read loop
while True:
data = server.recv(BUFFER_SIZE)
if not data:
break
# send to Mongo
mongodoc = { "data": data, "date" : datetime.datetime.utcnow() }
db.ABC.insert_one(mongodoc)
finally:
conn.close()
【问题讨论】:
-
什么版本的mongo?
-
@GeorgePetrov PyMongo 3.2、MongoDB 2.6、Python 2.7。
-
@GeorgePetrov 现在对这个错误进行了排序。我已将 MongoDB 上的服务器命名为“GDS”。我应该在代码中明确提及还是只需要服务器 IP 地址就足够了?
-
但是你是怎么命名你的
db和collection的? -
@GeorgePetrov
DB的名称是 GDS,其中IP Address是10.52.124.186并且我使用过:db.RXMMongoDB.ABC.insert_one(mongodoc)所以即使我没有命名collection,ABC 也会被创建为一个集合吧?
标签: python mongodb sockets pymongo plc