Skip to main content

SQLAlchemy extension for dealing with SphinxQL

Project description

travis pypi coveralls

SQLAlchemy Sphinx is a dialect for SQLalchemy which converts SQLAlchemy model into compatible sql for sphinx.

This dialect works for both python 2 and 3. Currently you need to import sqlalchemy_sphinx to properly register for python 3.

Installation

SQLAlchemy Sphinx is available on pypi under the package name sqlalchemy-sphinx, you can get it by running:

pip install sqlalchemy-sphinx

Usage

Defining a Sphinx SQLAlchemy is exactly the same way you would create a sqlalchemy model.

from sqlalchemy import create_engine, Column, Integer, String, BigInteger, Unicode, Enum
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import deferred, sessionmaker

sphinx_engine = create_engine('sphinx://your.sphinx.host:9008')
SphinxBase = declarative_base(bind=sphinx_engine)
SphinxSession = sessionmaker(bind=sphinx_engine)
sphinx_session = SphinxSession()


class MockSphinxModel(Base):
    __tablename__ = "mock_table"
    name = Column(String)
    id = Column(Integer, primary_key=True)
    country = Column(String)
    ranker = deferred(Column(String))
    group_by_dummy = deferred(Column(String))
    max_matches = deferred(Column(String))
    field_weights = deferred(Column(String))

After the model is created we can run queries against the model:

query = session.query(MockSphinxModel).limit(100)
# 'SELECT name, id, country FROM mock_table LIMIT 0, 100'

We can also do matching

base_query = session.query(MockSphinxModel.id)
query = base_query.filter(MockSphinxModel.country.match("US"))
# "SELECT id FROM mock_table WHERE MATCH('(@country US)')"

query = base_query.filter(MockSphinxModel.name.match("adriel"), MockSphinxModel.country.match("US"))
# "SELECT id FROM mock_table WHERE MATCH('(@name adriel) (@country US)')"

Options:

query = session.query(MockSphinxModel.id)
query = query.filter(func.options(MockSphinxModel.field_weights == ["title=10", "body=3"]))
# 'SELECT id FROM mock_table OPTION field_weights=(title=10, body=3)'

query = session.query(MockSphinxModel.id)
query = query.filter(MockSphinxModel.country.match("US"), func.options(MockSphinxModel.max_matches == 1))
# "SELECT id FROM mock_table WHERE MATCH('(@country US)') OPTION max_matches=1"

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

sqlalchemy_sphinx-0.9.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

sqlalchemy_sphinx-0.9.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_sphinx-0.9.0.tar.gz.

File metadata

  • Download URL: sqlalchemy_sphinx-0.9.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8

File hashes

Hashes for sqlalchemy_sphinx-0.9.0.tar.gz
Algorithm Hash digest
SHA256 80300278a8d51556e238a6088b4f158148e2851532350399e3ea74e922aeca47
MD5 a819a33b60db21f7a4ad8383494e9b65
BLAKE2b-256 4d6f9b6046805de5f370d0686eab853f7a82a1d281a4ad26c8deb8357511c5e0

See more details on using hashes here.

File details

Details for the file sqlalchemy_sphinx-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: sqlalchemy_sphinx-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8

File hashes

Hashes for sqlalchemy_sphinx-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4b94109a51e329ffd42abea80a5a09b934e365a3864bdf924551638b2b9c9e9
MD5 4ab5785645ad60be677c3a89c7dd58cd
BLAKE2b-256 06324f620a205c37af5efa5c803fcc306a123bd670a0b5384e8dc51df700b2d2

See more details on using hashes here.

Supported by

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