Unable to insert data into MongoDB.

MRAB python at mrabarnett.plus.com
Thu Feb 11 11:09:29 EST 2016


On 2016-02-11 15:12, Arjun Srivatsa wrote:
> Hi guys. I am basically transferring the data from PLC to PC (where the Python API runs) but I'm unable to insert into MongoDB thereafter. When I run the Python script on IDLE, the output is
>
> Hello World!
> Traceback (most recent call last): File "C:\Users\SRA2LO\Desktop\API.py", line 32, in <module> s.bind((IP, PORT)) File "C:\Python27\lib\socket.py", line 228, in meth return getattr(self._sock,name)(*args) error: [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions
> and when I change the IP of MongoDB server, it shows
>
>
> Hello World!
> Traceback (most recent call last): File "C:\Users\SRA2LO\Desktop\API.py", line 32, in <module> s.bind((IP, PORT)) File "C:\Python27\lib\socket.py", line 228, in meth return getattr(self._sock,name)(*args) error: [Errno 10049] The requested address is not valid in its context.
>
> Could you please help me out? I have disabled the firewall as well.
>
> Here's the API I have written.
>
> #!/usr/bin/python
>
> import socket
> import socket
> from pymongo import MongoClient
> #from eve import Eve
> import datetime
>
> # Connection to server (PLC) on port 27017
> server = socket.socket()
> host = "10.52.124.135" #IP of PLC
> port = 27017
> BUFFER_SIZE = 1024
> ###############
>
> server.connect((host, port))
> print server.recv(1024)
>
> server.close
>
> #Connection to Client (Mongodb) on port 27017
> IP = "127.0.0.1"
> PORT = 27017
> BUFFER_SIZE = 1024
>
> client = MongoClient('127.0.0.1', 27017)
> db = client.test_database
>
> 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
>          conn.sendall(data)
>
>
>          # send to MongoDB
>
>          mongodoc = { "data": data, "date" : datetime.datetime.utcnow() }
>
>
>          ABC = db.ABC
>          ABC_id = ABC.insert_one(mongodoc).inserted_id
>
> finally:
>      conn.close()
>
I don't know whether it's relevant, but you didn't close the server 
socket. You have "server.close" instead of "server.close()".

Also, the code as posted won't compile because the block after the 
"while True:" isn't indented.




More information about the Python-list mailing list