複数のデータベースからデータをコピーして処理し、その後メインデータベースに移動したいと思います。すべてのデータベースは同じスキーマを持っています。
データベースを開いたり閉じたりしても、peeweeは常に同じデータベース(リストの3番目)に接続し、接続順序を尊重しません。
databases = [spie_db, opticsorg_db, phcom_db]
# map to a dictionary the values from the record
def mapping(record):
comp_d = {'name': record.name,
'address': record.address,
'country': record.country,
'website': record.website,
'domain': record.domain
}
return comp_d
def merge_data():
company_list = []
for database in databases:
database.connect()
# cycle trough db
for record in Company.select():
# append each record to the list
company_list.append(mapping(record))
database.close()
return company_list
# get data from the other databases
companies = merge_data()
# the merge database
db.connect()
# add records in the merge db
for company in companies:
Company.create(name=company['name'], address=company['address'], country=company['country'],
website=company['website'], domain=company['domain'])
db.close()
モデルのメタオプションでデータベースを手動で設定する必要があります。
Company._meta.database = db
db.connect()
for company in companies:
Company.create(name=company['name'], address=company['address'], country=company['country'],
website=company['website'], domain=company['domain'])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加