sql >> Databasteknik >  >> RDS >> Mysql

Hur frågar man flera liknande databaser med Peewee?

Nästa är kanske inte exakt ett svar på ditt problem, men det jag försökte själv - framgångsrikt - är att använda en lekstuga.Proxy instans för varje schema jag vill använda, och hänvisar till en motsvarande proxy i innerklassen Meta. Jag antar att det här kommer att fungera utan proxyservrar också. Det verkar dock som om du letar efter schemaöverskridande frågor och redan har kommit på vad jag kom fram till just 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')

Tja, detta är möjligt med hantverksgenererad kod från pwiz.py. Jag är säker på att det finns en mer elegant och lat (dvs. inte ivriga ) sätt att göra detta också, med någon form av fabrik, men jag har inte spenderat mycket tid på Python eller PeeWee än. I så fall borde pwiz.py ha en extra flagga för detta ändamål också, antar jag.



  1. Hur tar man bort flera rader från mysql-databasen med kryssrutan med PHP?

  2. Hur säkrar man databaskonfigurationsfilen i projektet?

  3. MYSQL:OM har OR-villkor ®EXP-matchning

  4. Base58 Encoder funktion i PostgreSQL