sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo consultar varias bases de datos similares usando Peewee?

Lo siguiente quizás no sea una respuesta exacta a su problema, pero lo que probé yo mismo, con éxito, es usar un playhouse.Proxy instancia para cada esquema que quiero usar, y referirme a un proxy correspondiente en la clase interna Meta. Supongo que esto también funcionará sin proxies. Sin embargo, parece que está buscando consultas entre esquemas y ya descubrió lo que se me ocurrió hace un momento.

#!/usr/bin/python

import sqlite3
import peewee
from peewee import *
from playhouse.proxy import *

database_a_proxy = Proxy()
database_b_proxy = Proxy()

class BaseModelA(Model):
    class Meta:
            database = database_a_proxy

class BaseModelB(Model):
    class Meta:
            database = database_b_proxy

class RelationInSchemaA(BaseModelA):
    textfield = CharField()

class RelationInSchemaB(BaseModelB):
    textfield = CharField()

database_a = SqliteDatabase('schemaA', **{})
database_b = SqliteDatabase('schemaB', **{})

database_a_proxy.initialize(database_a)
database_b_proxy.initialize(database_b)

try:
   RelationInSchemaA.create_table()
   RelationInSchemaB.create_table()
except:
   pass

RelationInSchemaA.create(textfield='Hello')  
RelationInSchemaB.create(textfield='PeeWee')

Bueno, esto es posible con el código generado a mano de pwiz.py. Seguro que hay una más elegante y perezosa (es decir, no ansioso ) forma de hacer esto también, usando algún tipo de fábrica, pero todavía no dediqué mucho tiempo a Python ni a PeeWee. Si es así, supongo que pwiz.py también debería tener un indicador adicional para este propósito.