File: //opt/alt/python35/lib64/python3.5/site-packages/playhouse/__pycache__/read_slave.cpython-35.pyc
R6�W� � @ s* d Z d d l TGd d � d e � Z d S)ag
Support for using a dedicated read-slave. The read database is specified as a
Model.Meta option, and will be used for SELECT statements:
master = PostgresqlDatabase('master')
read_slave = PostgresqlDatabase('read_slave')
class BaseModel(ReadSlaveModel):
class Meta:
database = master
read_slaves = [read_slave] # This database will be used for SELECTs.
# Now define your models as you would normally.
class User(BaseModel):
username = CharField()
# To force a SELECT on the master database, you can instantiate the SelectQuery
# by hand:
master_select = SelectQuery(User).where(...)
� )�*c sR e Z d Z e d d � � Z e � f d d � � Z e � f d d � � Z � S)�ReadSlaveModelc C s_ t | j d d � s | j j St | d d � } | d t | j j � | _ | j j | j S)N�read_slaves�_read_slave_idx� ���)�getattrZ_meta�database�lenr r )�clsZcurrent_idx� r �/read_slave.py�_get_read_database s
z!ReadSlaveModel._get_read_databasec s. t t | � j | | � } | j � | _ | S)N)�superr �selectr r )r �args�kwargs�query)� __class__r r
r # s zReadSlaveModel.selectc sF t t | � j | | � } | j j � j d � rB | j � | _ | S)Nr )r r �rawZ_sql�lower�
startswithr r )r r r r )r r r
r ) s zReadSlaveModel.raw)�__name__�
__module__�__qualname__�classmethodr r r r r )r r
r s r N)�__doc__ZpeeweeZModelr r r r r
�<module> s