a tiny wrapper for mySQLDB
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lurker added tests for autocommit Mar 5, 2013
tests fixed tearDown Mar 5, 2013
README Update README Mar 29, 2013
lurker.jpg added lurker artwork. Feb 13, 2013
readme.markdown Update readme.markdown Jul 6, 2013
requirements.txt * Added initial cache/backend for queries Jul 28, 2012



Lurker is a tiny mysql wrapper built on the top of python-mySQLdb.


install via pip

pip install lurker

or easy_install if you like 90's.

easy_install lurker

or latest master branch

git clone git://github.com/emre/lurker.git
python setup.py install

Quick Tutorial

Connecting to the database

  • with Configuration objects. (This could be preferrable for seperating environments like DevConfig, ProdConfig, TestConfig)
class DatabaseConfig(BaseLurkerConfig):
    host = 'localhost'
    user = 'root'
    passwd = ''
    db = ''

connection = Connection(DatabaseConfig)
  • without Configuration objects
connection = Connection().quick_connect("mysql_user", "mysql_passwd", "db_name", "host")

Sending Queries

# returns last_id
connection.execute("INSERT INTO table_name (name) VALUES (%s)", ['Selami Sahin', ])

# returns row count
connection.execute("UPDATE table_name SET name = %s", ["Muhittin Bosat", ])

# returns a result set
all_people = connection.get_results("SELECT * FROM people")

# returns a row
one_people = connection.get_row("SELECT * FROM people WHERE id = 1")

# server-side cursor
for person in connection.iterate("SELECT * FROM people"):
    print person

Query Caching Support with Redis

  • In order to activate caching support, you need to set cache and cache_information variables in your config class.
from lurker.configuration import BaseLurkerConfig
from lurker.connection import Connection
from lurker.cache.backends.redis_backend import RedisBackend

class DbConfig(BaseLurkerConfig):
    host = 'localhost'
    user = 'root'
    passwd = 'passwd'
    db = 'db_name'
    cache = True
    cache_information = {
        'backend': RedisBackend,
        'args': (),
        'kwargs': {'host': 'localhost', 'port': 6379, 'db': 0},
  • Usage in get_results and get_row
print connection.get_row("SELECT * FROM people WHERE id = %s", parameters=(1,), cache=30)
print connection.get_row("SELECT * FROM people WHERE id = %s", parameters=(1,), cache=30)

# output
# DEBUG:root:cache miss: SELECT * FROM people WHERE id = %s
# {'id': 1L, 'name': u'Emre Yilmaz'}
# DEBUG:root:cache hit: SELECT * FROM people WHERE id = %s
# {u'id': 1, u'name': u'Emre Yilmaz'}


Emre Yılmaz - @emre_yilmaz


Mirat Can Bayrak - @mirat

Projects/Scripts powered by lurker