stormbrigade_sheriff/vm_entries_migrate.py

49 lines
1.5 KiB
Python

import sqlite3
from pymongo import MongoClient
from datetime import datetime
# Connect to SQLite database
sqlite_conn = sqlite3.connect('sbsheriff.sqlite')
sqlite_conn.row_factory = sqlite3.Row
sqlite_cursor = sqlite_conn.cursor()
# Connect to MongoDB
mongo_client = MongoClient('mongodb://sheriff:unnipus1213@192.168.1.109:27017/?retryWrites=true&serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&authSource=stormbrigade&authMechanism=SCRAM-SHA-256')
mongo_db = mongo_client['stormbrigade']
mongo_collection = mongo_db['vm_entries']
# Set row factory to preserve column names as keys
# Fetch rows from SQLite table
sqlite_cursor.execute('SELECT * FROM vm_entries')
rows = sqlite_cursor.fetchall()
# Transfer rows to MongoDB collection
print(len(rows))
for row in rows:
document = dict(row)
print(document)
document['added'] = datetime.fromtimestamp(document['added'])
if document.get('finished') is not None:
document['finished'] = datetime.fromtimestamp(document['finished'])
else:
document.pop("finished")
guild_id = document.pop('gID', None)
name = document.pop('name', None)
document['guild_id'] = guild_id
document['public'] = False
document['in_game_name'] = name
mongo_collection.update_one(
{"guild_id": guild_id, "in_game_name": document["in_game_name"], "added": {"$eq":document['added']}},
{"$set": document},
upsert=True
)
# Close connections
sqlite_conn.close()
mongo_client.close()