Files
2025-05-20 11:57:43 -04:00

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'])