SQLAlchemy extension for dealing with SphinxQL
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80300278a8d51556e238a6088b4f158148e2851532350399e3ea74e922aeca47 |
|
MD5 | a819a33b60db21f7a4ad8383494e9b65 |
|
BLAKE2b-256 | 4d6f9b6046805de5f370d0686eab853f7a82a1d281a4ad26c8deb8357511c5e0 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4b94109a51e329ffd42abea80a5a09b934e365a3864bdf924551638b2b9c9e9 |
|
MD5 | 4ab5785645ad60be677c3a89c7dd58cd |
|
BLAKE2b-256 | 06324f620a205c37af5efa5c803fcc306a123bd670a0b5384e8dc51df700b2d2 |