DB¶
pyinaturalist_convert.db
Data models and utilities for storing observations and related data in a relational database, including SQLite, PostgreSQL, and any other database supported by SQLAlchemy.
These models contain a relevant subset of columns common to most iNat data sources, suitable for combining data from API results, CSV export, DwC-A, and/or inaturalist-open-data.
Some helper functions are included for the most common cases of saving and loading taxon and observation data. Requirements for a relational database are highly variable, so this won’t suit all use cases, but at least provides a starting point.
Extra dependencies: sqlalchemy
Example:
>>> from pyinaturalist import iNatClient
>>> from pyinaturalist_convert import create_tables, read_observations, save_observations
>>> # Fetch all of your own observations
>>> client = iNatClient()
>>> observations = client.observations.search(user_id='my_username').all()
>>> # Save to a SQLite database
>>> create_tables('observations.db')
>>> save_observations(observations, 'observations.db')
>>> # Read them back from the database
>>> for observation in get_db_observations('observations.db'):
... print(observation)
Main functions:
Create all tables in a SQLite database |
|
Load observation records and associated taxa from SQLite |
|
Load taxon records from SQLite |
|
Save Observation objects (and associated taxa and photos) to SQLite |
|
Save Taxon objects (plus ancestors and children, if available) to SQLite |
Models:
- pyinaturalist_convert.db.create_table(model, db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'))¶
Create a single table for the specified model, if it doesn’t already exist
- pyinaturalist_convert.db.create_tables(db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'))¶
Create all tables in a SQLite database
- pyinaturalist_convert.db.get_db_observations(db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'), ids=None, username=None, limit=None, page=None, order_by_created=False, order_by_observed=False)¶
Load observation records and associated taxa from SQLite
- Return type:
- pyinaturalist_convert.db.get_db_taxa(db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'), ids=None, accept_partial=True, limit=200)¶
Load taxon records from SQLite
- pyinaturalist_convert.db.get_session(db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'))¶
Get a SQLAlchemy session for a SQLite database
- Return type:
Session
- pyinaturalist_convert.db.save_observations(observations, db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'))¶
Save Observation objects (and associated taxa and photos) to SQLite
- pyinaturalist_convert.db.save_taxa(taxa, db_path=PosixPath('/home/docs/.local/share/pyinaturalist/observations.db'))¶
Save Taxon objects (plus ancestors and children, if available) to SQLite