Skip to content
Snippets Groups Projects
Commit 55845a2a authored by Bo-Chun Chen's avatar Bo-Chun Chen
Browse files

Add data migration script for created and origin column

parent 0d95a8f9
No related branches found
No related tags found
No related merge requests found
Pipeline #10330 passed with stage
in 1 minute and 9 seconds
import csv
import dataset
from datetime import datetime
import rabbit_config as rcfg
def upgrade():
db_path = rcfg.db_path
db_name = "user_reg.db"
csv_filename = "./migrations/account-registration-history.csv"
db = dataset.connect(f"sqlite:///{db_path}/{db_name}")
table = db["users"]
# Get all username and last_update
usernames = db.query("SELECT username, last_update FROM users")
users = {}
for u in usernames:
users[u["username"]] = dict(u)
# Get created from csv file
with open(csv_filename) as f:
reader = csv.reader(f, delimiter=",")
# Skip header
next(reader)
for row in reader:
if row[0] in users:
users[row[0]]["created"] = datetime.fromisoformat(row[1][:-3])
users[row[0]]["origin"] = row[2]
# Add copy created column from last_update if they are not in csv file
for username in users:
if "created" not in users[username]:
users[username]["created"] = datetime.fromisoformat(
users[username]["last_update"]
)
users[username]["origin"] = "last_update"
# No need to update this column back to the db
del users[username]["last_update"]
# Create new columns
table.create_column("created", db.types.datetime)
table.create_column("origin", db.types.text)
# Update database in chunk
table.update_many(list(users.values()), ["username"], ensure=True)
if __name__ == "__main__":
upgrade()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment