sql >> Database >  >> RDS >> Mysql

Hoe meerdere vergelijkbare databases te doorzoeken met Peewee?

Het volgende is misschien niet precies een antwoord op je probleem, maar wat ik zelf heb geprobeerd - met succes - is het gebruik van een playhouse.Proxy instantie voor elk schema dat ik wil gebruiken, en verwijzen naar een overeenkomstige proxy in de innerclass Meta. Ik denk dat dit ook zal werken zonder proxy's. Het lijkt er echter op dat u op zoek bent naar cross-schema-query's en al hebt ontdekt wat ik zojuist heb bedacht.

#!/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')

Welnu, dit is mogelijk door met de hand gegenereerde code van pwiz.py te maken. Ik weet zeker dat er een elegantere en luie . is (d.w.z. niet enthousiast ) manier om dit ook te doen, met behulp van een soort fabriek, maar ik heb nog niet veel tijd besteed aan Python of PeeWee. Als dat zo is, zou pwiz.py voor dit doel ook een extra vlag moeten hebben, denk ik.



  1. Php/Mysql-datum opgeslagen als '0000-00-00'

  2. Parallelle/gelijktijdige downloads beperken - Hoe weet ik of de download is geannuleerd?

  3. een dynamische query bouwen in mysql en golang

  4. Het aantal invoeg-/updaterijen ophalen van ON DUPLICATE KEY UPDATE