Skip to main content

MobilityDB extensions to SQLAlchemy

Project description

Test Status Documentation Status PyPI downloads MIT License

MobilityDB SQLAlchemy

This package provides extensions to SQLAlchemy for interacting with MobilityDB. The data retrieved from the database is directly mapped to time-indexed pandas DataFrame objects. TGeomPoint and TGeogPoint objects can be optionally mapped to movingpandas’ Trajectory data structure.

Thanks to the amazing work by MobilityDB and movingpandas teams, because of which this project exists.

A demo webapp built using this library is now available online:

Live Demo: https://mobilitydb-sqlalchemy-demo.adonmo.com

Source Code: https://github.com/adonmo/mobilitydb-sqlalchemy-demo

Installation

The package is available on PyPI, for Python >= 3.7

pip install mobilitydb-sqlalchemy

Usage

from mobilitydb_sqlalchemy import TGeomPoint

from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Trips(Base):
    __tablename__ = "test_table_trips_01"
    car_id = Column(Integer, primary_key=True)
    trip_id = Column(Integer, primary_key=True)
    trip = Column(TGeomPoint)

trips = session.query(Trips).all()

# Querying using MobilityDB functions, for example - valueAtTimestamp
session.query(
    Trips.car_id,
    func.asText(
        func.valueAtTimestamp(Trips.trip, datetime.datetime(2012, 1, 1, 8, 10, 0))
    ),
).all()

There is also a tutorial published on Anita Graser’s blog.

For more details, read our documentation (specifically, the quickstart).

Contributing

Issues and pull requests are welcome.

  • For proposing new features/improvements or reporting bugs, create an issue.

  • Check open issues for viewing existing ideas, verify if it is already proposed/being worked upon.

  • When implementing new features make sure to add relavant tests and documentation before sending pull requests.

Setup environment

First, make sure you have poetry installed Then, get the dependencies by running (in the project home directory):

poetry install

Also make sure you setup git hooks locally, this will ensure code is formatted using black before committing any changes to the repository

pre-commit install

Running Tests

Spin up a mobilitydb instance

docker volume create mobilitydb_data
docker run --name "mobilitydb" -d -p 25432:5432 -v mobilitydb_data:/var/lib/postgresql codewit/mobilitydb

Run the tests

movingpandas is an optional dependency - but to run tests you would need it. So if this is your first time running tests, install it by running:

# Currently installing the optional dependency of movingpandas
# using `poetry install -E movingpandas` doesn't work

# To get movingpandas use pip instead of poetry, run the following (in exact order):
poetry shell
pip install cython
pip install git+https://github.com/SciTools/cartopy.git --no-binary cartopy
pip install movingpandas

# This is because of movingpandas dependency cartopy not being PEP 518 compliant
# Refer: https://github.com/SciTools/cartopy/issues/1112

Now, you can actually run the tests using:

poetry run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mobilitydb-sqlalchemy-0.2.1.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mobilitydb_sqlalchemy-0.2.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file mobilitydb-sqlalchemy-0.2.1.tar.gz.

File metadata

  • Download URL: mobilitydb-sqlalchemy-0.2.1.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b5 CPython/3.8.1 Linux/5.5.6-arch1-1

File hashes

Hashes for mobilitydb-sqlalchemy-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1c253e58701b023626dc64c72f2ce507540d4551ace876df3ea9e12fd58d6134
MD5 168175d8fa8fd356296676b8e1a34ef0
BLAKE2b-256 c6d785a3dd911b5e75c050e1f48ae4e297d60d59644236506beb25632e6adac3

See more details on using hashes here.

File details

Details for the file mobilitydb_sqlalchemy-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mobilitydb_sqlalchemy-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 be53fca40ed97f0967e0be57d18ef3d676e04fe9566c68dc6723d3b84b01531f
MD5 e1bc178b556feabd6129e2ee72aa221e
BLAKE2b-256 83c22bf13e6ff13ec46c7cc14d3f515de9e0ef243209a6a8484c7f21c4f7db11

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page