Unable to insert data into MongoDB.

Arjun Srivatsa arjuns123 at gmail.com
Mon Feb 15 05:44:34 EST 2016


I changed the port number from 27017 to 55555 in the code segment: 

    IP = "127.0.0.1" 
    PORT = 27017 
    BUFFER_SIZE = 1024 
    client = MongoClient('127.0.0.1', 27017) 

And my output on Python shell is: 

hello world!
Connection address: ('127.0.0.1', 16951)
Connection address: ('127.0.0.1', 16953)
Connection address: ('127.0.0.1', 16957)
Connection address: ('127.0.0.1', 16958)
Connection address: ('127.0.0.1', 16959)
Connection address: ('127.0.0.1', 16961)
Connection address: ('127.0.0.1', 16962)
Connection address: ('127.0.0.1', 16963)
Connection address: ('127.0.0.1', 16964)
Connection address: ('127.0.0.1', 16965)

and it goes on and on...

What does the above port numbers mean? And I can't still see the data being inserted into Database yet. 

And as you said, if I change server.close to server.close(), then I get a traceback:

Traceback (most recent call last):
  File "C:\Users\SRA2LO\Desktop\API.py", line 41, in <module>
    data = server.recv(BUFFER_SIZE)
  File "C:\Python27\lib\socket.py", line 174, in _dummy
    raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor


On Thursday, February 11, 2016 at 5:09:53 PM UTC+1, MRAB wrote:
> 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