sql >> データベース >  >> RDS >> Mysql

Peeweeを使用していくつかの同様のデータベースにクエリを実行するにはどうすればよいですか?

    次はあなたの問題に対する正確な答えではないかもしれませんが、私が自分で試したのは-成功して- playhouse.Proxyを使用することです 使用するすべてのスキーマのインスタンスであり、内部クラスMetaの対応するプロキシを参照します。これはプロキシがなくても機能すると思います。ただし、クロススキーマクエリを探していて、私が今思いついたものをすでに理解しているようです。

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

    これは、pwiz.pyから生成されたコードを手作りすることで可能になります。もっとエレガントで怠惰な (つまり、熱心ではない )これを行う方法も、ある種のファクトリを使用しますが、PythonやPeeWeeにはまだ多くの時間を費やしていません。もしそうなら、pwiz.pyにもこの目的のための追加のフラグが必要だと思います。



    1. MySQLで行を列に転置する

    2. OrmliteでForeignCollectionフィールドをカーソルに入れる方法

    3. mysqlはLOADDATAINFILEと重複します

    4. 'DELIMITER$$'付近のエラー