86 lines
2.1 KiB
Python
86 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
import re
|
|
from pymongo import MongoClient, errors
|
|
|
|
FIELD_NAMES = (
|
|
'termnumber lastname firstname '
|
|
'birthdate '
|
|
'deathdate birthplace birthstate '
|
|
'termstartdate '
|
|
'termenddate '
|
|
'party'
|
|
).split() # <1>
|
|
|
|
mc = MongoClient() # <2>
|
|
|
|
try:
|
|
mc.drop_database("presidents") # <3>
|
|
except errors.PyMongoError as err:
|
|
print(err)
|
|
|
|
db = mc["presidents"] # <4>
|
|
|
|
coll = db.presidents # <5>
|
|
|
|
with open('../DATA/presidents.txt') as presidents_in: # <6>
|
|
for line in presidents_in:
|
|
flds = line[:-1].split(':')
|
|
kvpairs = zip(FIELD_NAMES, flds)
|
|
record_dict = dict(kvpairs)
|
|
coll.insert_one(record_dict) # <7>
|
|
|
|
print(db.list_collection_names()) # <8>
|
|
print()
|
|
|
|
abe = coll.find_one({'termnumber': '16'}) # <9>
|
|
print(abe, '\n')
|
|
|
|
for field in FIELD_NAMES:
|
|
print("{0:15s} {1}".format(field.upper(), abe[field])) # <10>
|
|
|
|
print('-' * 50)
|
|
|
|
for president in coll.find(): # <11>
|
|
print("{0[firstname]:25s} {0[lastname]:30s}".format(president))
|
|
print('-' * 50)
|
|
|
|
rx_lastname = re.compile('^roo', re.IGNORECASE)
|
|
for president in coll.find({'lastname': rx_lastname}): # <12>
|
|
print("{0[firstname]:25s} {0[lastname]:30s}".format(president))
|
|
print('-' * 50)
|
|
|
|
for president in coll.find({"birthstate": 'Virginia'}): # <13>
|
|
print("{0[firstname]:25s} {0[lastname]:30s}".format(president))
|
|
|
|
print('-' * 50)
|
|
print("removing Millard Fillmore")
|
|
result = coll.delete_one({'lastname': 'Fillmore'}) # <14>
|
|
print(result)
|
|
result = coll.delete_one({'lastname': 'Roosevelt'}) # <14>
|
|
print(result)
|
|
print('-' * 50)
|
|
|
|
|
|
result = coll.delete_one({'lastname': 'Bush'})
|
|
print(dir(result))
|
|
print()
|
|
|
|
result = coll.count_documents({}) # <15>
|
|
print(result)
|
|
|
|
|
|
for president in coll.find(): # <11>
|
|
print("{0[firstname]:25s} {0[lastname]:30s}".format(president))
|
|
print('-' * 50)
|
|
|
|
animals = db.animals
|
|
|
|
print(animals, '\n')
|
|
|
|
animals.insert_one({'name': 'wombat', 'country': 'Australia'})
|
|
animals.insert_one({'name': 'ocelot', 'country': 'Mexico'})
|
|
animals.insert_one({'name': 'honey badger', 'country': 'Iran'})
|
|
|
|
for doc in animals.find():
|
|
print(doc['name'])
|