Skip to content

Instantly share code, notes, and snippets.

@NathanLawrence
Created April 14, 2017 15:27
Show Gist options
  • Save NathanLawrence/a7e746458604d60c4ee91ecad959c421 to your computer and use it in GitHub Desktop.
Save NathanLawrence/a7e746458604d60c4ee91ecad959c421 to your computer and use it in GitHub Desktop.
Access Missouri Existing DB Models (PeeWee)
from peewee import *
database = PostgresqlDatabase('accessmo', **{'host': '*************',
'password': '**********', 'user': '************', 'port': 5432})
# Initialize Deferred Relationships
DeferredSession = DeferredRelation()
DeferredLegislator = DeferredRelation()
DeferredLegislatorTwo = DeferredRelation()
DeferredMecCommittee = DeferredRelation()
DeferredLegForMec = DeferredRelation()
DeferredDistrict = DeferredRelation()
class UnknownField(object):
def __init__(self, **kwargs):
pass
class BaseModel(Model):
class Meta:
database = database
class Actor(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'actors'
schema = 'bills'
class BillDocument(BaseModel):
bill = IntegerField(db_column='bill_id', null=True)
mimetype = TextField(null=True)
name = TextField(null=True)
os_doc = TextField(db_column='os_doc_id', null=True)
url = TextField(null=True)
class Meta:
db_table = 'bill_documents'
schema = 'bills'
class BillSponsorTypes(BaseModel):
code = CharField(null=True)
name = TextField(null=True)
class Meta:
db_table = 'bill_sponsor_types'
schema = 'bills'
class BillSponsor(BaseModel):
bill = IntegerField(db_column='bill_id', null=True)
legislator = ForeignKeyField(db_column='legislator_id', rel_model=DeferredLegislator, index=True, null=True)
sponsor_type = IntegerField(db_column='sponsor_type_id', null=True)
class Meta:
db_table = 'bill_sponsors'
schema = 'bills'
class BillSubject(BaseModel):
bill = IntegerField(db_column='bill_id', index=True, null=True)
subject = IntegerField(db_column='subject_id', index=True, null=True)
class Meta:
db_table = 'bill_subjects'
schema = 'bills'
class BillType(BaseModel):
chamber = IntegerField(db_column='chamber_id', null=True)
code = TextField(null=True)
name = TextField(null=True)
class Meta:
db_table = 'bill_types'
schema = 'bills'
class BillVersion(BaseModel):
bill = IntegerField(db_column='bill_id', null=True)
document = IntegerField(db_column='document_id', null=True)
name = TextField(null=True)
class Meta:
db_table = 'bill_versions'
schema = 'bills'
class Bill(BaseModel):
bill_no = IntegerField(null=True)
chamber = IntegerField(db_column='chamber_id', index=True, null=True)
created_at = DateTimeField(null=True)
effective_date_description = TextField(null=True)
first_date = DateField(null=True)
is_key_bill = IntegerField(null=True)
last_date = DateField(null=True)
name = TextField(index=True, null=True)
os_bill_type = IntegerField(db_column='os_bill_type_id', null=True)
os = TextField(db_column='os_id', null=True)
passed_lower_date = DateField(null=True)
passed_upper_date = DateField(null=True)
session = ForeignKeyField(db_column='session_id', rel_model=DeferredSession, index=True, null=True)
signed_date = DateField(null=True)
source = IntegerField(db_column='source_id', null=True)
state_lr_no = TextField(null=True)
title = TextField(null=True)
type = IntegerField(db_column='type_id', null=True)
updated_at = DateTimeField(null=True)
class Meta:
db_table = 'bills'
schema = 'bills'
class Journals(BaseModel):
chamber = IntegerField(db_column='chamber_id', null=True)
date = DateField(null=True)
journal_number = IntegerField(null=True)
name = TextField(null=True)
url = TextField(null=True)
class Meta:
db_table = 'journals'
schema = 'bills'
class Vote(BaseModel):
absent_count = IntegerField(null=True)
absent_leave_count = IntegerField(null=True)
bill = ForeignKeyField(db_column='bill_id', null=True, rel_model=Bill, to_field='id')
chamber = IntegerField(db_column='chamber_id', null=True)
is_passed = IntegerField(null=True)
journal = IntegerField(db_column='journal_id', null=True)
motion = TextField(null=True)
no_count = IntegerField(null=True)
os_vote = TextField(db_column='os_vote_id', null=True)
os_vote_type = IntegerField(db_column='os_vote_type_id', null=True)
other_count = IntegerField(null=True)
present_count = IntegerField(null=True)
roll_call_number = IntegerField(null=True)
session = IntegerField(db_column='session_id', null=True)
source = IntegerField(db_column='source_id', index=True, null=True)
vacant_count = IntegerField(null=True)
voted_on = DateField(null=True)
yes_count = IntegerField(null=True)
class Meta:
db_table = 'votes'
schema = 'bills'
class OsActionType(BaseModel):
description = TextField(null=True)
display_name = TextField(null=True)
name = TextField(null=True)
position = IntegerField(null=True)
class Meta:
db_table = 'os_action_types'
schema = 'bills'
class OsBillType(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'os_bill_types'
schema = 'bills'
class OsVoteTypes(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'os_vote_types'
schema = 'bills'
class Subjects(BaseModel):
is_scraped = IntegerField(null=True)
name = TextField(null=True)
class Meta:
db_table = 'subjects'
schema = 'bills'
# Financial Models
class MecActor(BaseModel):
legislator = IntegerField(db_column='legislator_id', null=True)
name_first = TextField(null=True)
name_last = TextField(null=True)
name_middle = TextField(null=True)
name_suffix = TextField(null=True)
class Meta:
db_table = 'mec_actors'
schema = 'financial'
class MecCommitteeAliases(BaseModel):
alias = TextField(null=True)
mec_committee = IntegerField(db_column='mec_committee_id', index=True, null=True)
name = TextField(null=True)
class Meta:
db_table = 'mec_committee_aliases'
schema = 'financial'
class MecCommitteeLegislator(BaseModel):
district = IntegerField(db_column='district_id', null=True)
legislator = ForeignKeyField(db_column='legislator_id', rel_model=DeferredLegForMec, index=True, null=True)
mec_committee = ForeignKeyField(db_column='mec_committee_id', rel_model=DeferredMecCommittee, index=True, null=True)
party = IntegerField(db_column='party_id', null=True)
term = IntegerField(db_column='term_id', null=True)
class Meta:
db_table = 'mec_committee_legislators'
schema = 'financial'
class MecCommitteeStatus(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'mec_committee_statuses'
schema = 'financial'
class MecCommitteeTypes(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'mec_committee_types'
schema = 'financial'
class MecCommittee(BaseModel):
address1 = TextField(null=True)
address2 = TextField(null=True)
city = TextField(null=True)
deputy_treasurer = IntegerField(db_column='deputy_treasurer_id', null=True)
mec = TextField(db_column='mec_id', index=True, null=True)
name = TextField(null=True)
state = IntegerField(db_column='state_id', index=True, null=True)
status = IntegerField(db_column='status_id', null=True)
treasurer = IntegerField(db_column='treasurer_id', null=True)
type = IntegerField(db_column='type_id', null=True)
zip = TextField(index=True, null=True)
class Meta:
db_table = 'mec_committees'
schema = 'financial'
class MecCompany(BaseModel):
address1 = TextField(null=True)
address2 = TextField(null=True)
city = TextField(index=True, null=True)
name = TextField(null=True)
state = IntegerField(db_column='state_id', null=True)
zip = TextField(index=True, null=True)
class Meta:
db_table = 'mec_companies'
schema = 'financial'
class MecGroups(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'mec_groups'
schema = 'financial'
class MecIndividual(BaseModel):
address1 = TextField(null=True)
address2 = TextField(null=True)
city = TextField(index=True, null=True)
employer = TextField(null=True)
name_first = TextField(null=True)
name_last = TextField(null=True)
name_middle = TextField(null=True)
name_suffix = TextField(null=True)
occupation = TextField(null=True)
state = IntegerField(db_column='state_id', index=True, null=True)
zip = TextField(index=True, null=True)
class Meta:
db_table = 'mec_individuals'
schema = 'financial'
class MecLobbyists(BaseModel):
address1 = TextField(null=True)
address2 = TextField(null=True)
city = TextField(null=True)
name_first = TextField(null=True)
name_last = TextField(null=True)
phone = TextField(null=True)
state = IntegerField(db_column='state_id', null=True)
zip = TextField(null=True)
class Meta:
db_table = 'mec_lobbyists'
schema = 'financial'
class MecSndRcvTypes(BaseModel):
model = TextField(null=True)
name = TextField(null=True)
class Meta:
db_table = 'mec_snd_rcv_types'
schema = 'financial'
class MecTransaction(BaseModel):
amount = FloatField(null=True)
description = TextField(null=True)
rcv = IntegerField(db_column='rcv_id', index=True, null=True)
rcv_type = IntegerField(db_column='rcv_type_id', index=True, null=True)
snd = IntegerField(db_column='snd_id', index=True, null=True)
snd_type = IntegerField(db_column='snd_type_id', index=True, null=True)
transaction_date = DateField(index=True, null=True)
type_code = CharField(null=True)
updated_at = DateTimeField(null=True)
class Meta:
db_table = 'mec_transactions'
schema = 'financial'
# Legislative Models
class Assembly(BaseModel):
end_year = IntegerField(null=True)
name = TextField(null=True)
seq = IntegerField(null=True)
start_year = IntegerField(null=True)
class Meta:
db_table = 'assemblies'
schema = 'legislative'
class AssemblyMember(BaseModel):
assembly = IntegerField(db_column='assembly_id', null=True)
chamber = IntegerField(db_column='chamber_id', null=True)
district = IntegerField(db_column='district_id', null=True)
legislator = IntegerField(db_column='legislator_id', null=True)
party = IntegerField(db_column='party_id', null=True)
race_candidate = IntegerField(db_column='race_candidate_id', null=True)
class Meta:
db_table = 'assembly_members'
schema = 'legislative'
class Chamber(BaseModel):
abbr_title = TextField(null=True)
code = CharField(null=True)
deleted = IntegerField(null=True)
image_url = TextField(null=True)
name = TextField(null=True)
os_name = TextField(null=True)
state = IntegerField(db_column='state_id', null=True)
title = TextField(null=True)
url = TextField(null=True)
class Meta:
db_table = 'chambers'
schema = 'legislative'
class CommitteeStatus(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'committee_statuses'
schema = 'legislative'
class District(BaseModel):
bbox = UnknownField(null=True) # USER-DEFINED
center_lat = FloatField(null=True)
center_lon = FloatField(null=True)
chamber = IntegerField(db_column='chamber_id', null=True)
deleted = IntegerField(null=True)
geom = UnknownField(null=True) # USER-DEFINED
lat_delta = FloatField(null=True)
lon_delta = FloatField(null=True)
name = TextField(null=True)
num_seats = IntegerField(null=True)
os_boundary = TextField(db_column='os_boundary_id', null=True)
os = TextField(db_column='os_id', null=True)
class Meta:
db_table = 'districts'
schema = 'legislative'
class ElectionType(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'election_types'
schema = 'legislative'
class Election(BaseModel):
deleted = IntegerField(null=True)
election_date = DateField(null=True)
type = IntegerField(db_column='type_id', null=True)
class Meta:
db_table = 'elections'
schema = 'legislative'
class LegislativeCommitteePosition(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'legislative_committee_positions'
schema = 'legislative'
class LegislativeCommittee(BaseModel):
chamber = IntegerField(db_column='chamber_id', null=True)
level = IntegerField(db_column='level_id', null=True)
name = TextField(null=True)
os = TextField(db_column='os_id', null=True)
class Meta:
db_table = 'legislative_committees'
schema = 'legislative'
class LegislativeOfficeType(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'legislative_office_types'
schema = 'legislative'
class LegislativeOffice(BaseModel):
address = TextField(null=True)
email_encoded = TextField(null=True)
fax = TextField(null=True)
legislator = IntegerField(db_column='legislator_id', null=True)
name = TextField(null=True)
phone = TextField(null=True)
type = IntegerField(db_column='type_id', null=True)
class Meta:
db_table = 'legislative_offices'
schema = 'legislative'
class LegislativeParty(BaseModel):
code = CharField(null=True)
name = TextField(null=True)
name_short = TextField(null=True)
class Meta:
db_table = 'legislative_parties'
schema = 'legislative'
class LegislativeTerm(BaseModel):
end_year = IntegerField(null=True)
name = TextField(null=True)
start_year = IntegerField(null=True)
state = IntegerField(db_column='state_id', null=True)
class Meta:
db_table = 'legislative_terms'
schema = 'legislative'
class LegislatorAppointment(BaseModel):
district = ForeignKeyField(db_column='district_id', index=True, null=True, rel_model=District, to_field='id')
legislator = ForeignKeyField(db_column='legislator_id', rel_model=DeferredLegislatorTwo, null=True, to_field='id')
party = IntegerField(db_column='party_id', null=True)
term = ForeignKeyField(db_column='term_id', index=True, null=True, rel_model=LegislativeTerm, to_field='id')
class Meta:
db_table = 'legislator_appointments'
schema = 'legislative'
class LegislatorCommittee(BaseModel):
committee = IntegerField(db_column='committee_id', null=True)
legislator = IntegerField(db_column='legislator_id', null=True)
position = IntegerField(db_column='position_id', null=True)
subcommittee = IntegerField(db_column='subcommittee_id', null=True)
term = ForeignKeyField(db_column='term_id', index=True, null=True, rel_model=LegislativeTerm, to_field='id')
class Meta:
db_table = 'legislator_committees'
schema = 'legislative'
class LegislatorElection(BaseModel):
district = IntegerField(db_column='district_id', null=True)
election = IntegerField(db_column='election_id', null=True)
id = IntegerField()
legislator = IntegerField(db_column='legislator_id', null=True)
party = IntegerField(db_column='party_id', null=True)
vote_count = IntegerField(null=True)
vote_percent = FloatField(null=True)
class Meta:
db_table = 'legislator_elections'
schema = 'legislative'
class LegislatorLevel(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'legislator_levels'
schema = 'legislative'
class LegislatorPosition(BaseModel):
legislator = IntegerField(db_column='legislator_id', null=True)
term = ForeignKeyField(db_column='term_id', index=True, null=True, rel_model=LegislativeTerm, to_field='id')
title = TextField(null=True)
class Meta:
db_table = 'legislator_positions'
schema = 'legislative'
class Legislator(BaseModel):
created_at = DateTimeField(null=True)
email_encoded = TextField(null=True)
is_active = IntegerField(null=True)
level = IntegerField(db_column='level_id', null=True)
name_first = TextField(null=True)
name_last = TextField(null=True)
name_middle = TextField(null=True)
name_suffix = TextField(null=True)
nickname = TextField(null=True)
os_leg = TextField(db_column='os_leg_id', null=True)
party = IntegerField(db_column='party_id', null=True)
photo_url = TextField(null=True)
suffixes = TextField(null=True)
transparencydata = TextField(db_column='transparencydata_id', null=True)
twitter = TextField(db_column='twitter_id', null=True)
updated_at = DateTimeField(null=True)
url = TextField(null=True)
votesmart = IntegerField(db_column='votesmart_id', null=True)
class Meta:
db_table = 'legislators'
schema = 'legislative'
class MemberSessionProfile(BaseModel):
assembly_member = IntegerField(db_column='assembly_member_id', null=True)
party = IntegerField(db_column='party_id', null=True)
raw_name = TextField(null=True)
session = IntegerField(db_column='session_id', null=True)
source_doc = IntegerField(db_column='source_doc_id', null=True)
class Meta:
db_table = 'member_session_profiles'
schema = 'legislative'
class Population(BaseModel):
amindian = IntegerField(null=True)
ap_blk = IntegerField(null=True)
apb_18plus = IntegerField(null=True)
asian = IntegerField(null=True)
asn_18plus = IntegerField(null=True)
black = IntegerField(null=True)
blk_18plus = IntegerField(null=True)
deviation = IntegerField(null=True)
district = ForeignKeyField(db_column='district_id', rel_model=DeferredDistrict, null=True)
hawaiian = IntegerField(null=True)
hisp_18plu = IntegerField(null=True)
hispanic = IntegerField(null=True)
hwn_18plus = IntegerField(null=True)
ideal = IntegerField(null=True)
ind_18plus = IntegerField(null=True)
min_18plus = IntegerField(null=True)
minority = IntegerField(null=True)
mr_18plus = IntegerField(null=True)
multi_race = IntegerField(null=True)
nh_18plus = IntegerField(null=True)
nh_w18plus = IntegerField(null=True)
nh_wht = IntegerField(null=True)
not_hisp = IntegerField(null=True)
oth_18plus = IntegerField(null=True)
other = IntegerField(null=True)
pop_18plus = IntegerField(null=True)
population = IntegerField(null=True)
white = IntegerField(null=True)
wht_18plus = IntegerField(null=True)
class Meta:
db_table = 'populations'
schema = 'legislative'
class SessionType(BaseModel):
name = TextField(null=True)
class Meta:
db_table = 'session_types'
schema = 'legislative'
class Session(BaseModel):
assembly = IntegerField(db_column='assembly_id', null=True)
display_name = TextField(null=True)
name = TextField(null=True)
start_date = DateField(null=True)
term = IntegerField(db_column='term_id', null=True)
type = IntegerField(db_column='type_id', null=True)
year = IntegerField(null=True)
class Meta:
db_table = 'sessions'
schema = 'legislative'
class SourceDoc(BaseModel):
chamber = IntegerField(db_column='chamber_id', index=True, null=True)
file_name = TextField(null=True)
fragment = TextField(null=True)
name = TextField(null=True)
netloc = TextField(null=True)
params = TextField(null=True)
parent = IntegerField(db_column='parent_id', null=True)
path = TextField(null=True)
query = TextField(null=True)
scheme = TextField(null=True)
session = IntegerField(db_column='session_id', index=True, null=True)
url = TextField(null=True)
class Meta:
db_table = 'source_docs'
schema = 'legislative'
class Subcommittee(BaseModel):
committee = IntegerField(db_column='committee_id', null=True)
name = TextField(null=True)
class Meta:
db_table = 'subcommittees'
schema = 'legislative'
class LegislatorVote(BaseModel):
legislator = ForeignKeyField(db_column='legislator_id', index=True, null=True, rel_model=Legislator, to_field='id')
vote = TextField(null=True)
vote_context = ForeignKeyField(db_column='vote_id', null=True, rel_model=Vote, to_field='id')
class Meta:
db_table = 'legislator_votes'
schema = 'bills'
class BillAction(BaseModel):
action_date = DateTimeField(index=True, null=True)
actor = IntegerField(db_column='actor_id', index=True, null=True)
bill = ForeignKeyField(db_column='bill_id', index=True, null=True, rel_model=Bill, to_field='id',
related_name='actions')
committee = ForeignKeyField(db_column='committee_id', index=True, null=True, rel_model=LegislativeCommittee,
to_field='id')
description = TextField(null=True)
journal = IntegerField(db_column='journal_id', null=True)
legislator = IntegerField(db_column='legislator_id', null=True)
source = IntegerField(db_column='source_id', index=True, null=True)
class Meta:
db_table = 'bill_actions'
schema = 'bills'
class ActionType(BaseModel):
action = ForeignKeyField(db_column='action_id', null=True, rel_model=BillAction, to_field='id')
os_action_type = IntegerField(db_column='os_action_type_id', index=True, null=True)
class Meta:
db_table = 'action_types'
indexes = (
(('action', 'os_action_type'), True),
)
schema = 'bills'
# Finalize Deferred Relationships
DeferredSession.set_model(Session)
DeferredLegislator.set_model(Legislator)
DeferredLegislatorTwo.set_model(Legislator)
DeferredMecCommittee.set_model(MecCommittee)
DeferredDistrict.set_model(District)
DeferredLegForMec.set_model(Legislator)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment