sql >> Database teknologi >  >> RDS >> Mysql

Hvordan forespørger man flere lignende databaser ved hjælp af Peewee?

Det næste er måske ikke et præcist svar på dit problem, men hvad jeg selv prøvede - med held - er at bruge en legehus.Proxy instans for hvert skema, jeg vil bruge, og referer til en tilsvarende proxy i innerclass Meta. Jeg gætter på, at dette også vil fungere uden proxyer. Det ser dog ud til, at du leder efter forespørgsler på tværs af skemaer og allerede har fundet ud af, hvad jeg fandt på lige nu.

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

Nå, dette er muligt med håndlavet kode fra pwiz.py. Jeg er sikker på, at der er en mere elegant og doven (dvs. ikke ivrig ) måde at gøre dette også ved at bruge en slags fabrik, men jeg brugte ikke meget tid på Python eller PeeWee endnu. Hvis det er tilfældet, burde pwiz.py også have et ekstra flag til dette formål.



  1. Opret bruger fra strengvariabler i en PL/SQL-blok

  2. Udskriv dataene i ResultSet sammen med kolonnenavne

  3. MySQL ISNULL() Forklaret

  4. Hvordan installerer og bruger jeg MySQLdb til Python 3 på Windows 10?