49 lines
1.5 KiB
Python
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()
|