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()