Files
qt5-legatus-legacy/Lts/Tests/DatabaseInitialisation/update_barcode_se.py
T
2026-08-13 18:33:10 +02:00

48 lines
1.3 KiB
Python
Executable File

#!/usr/bin/python
# This Python file uses the following encoding: utf-8
import sys
from collections import OrderedDict
def readBarcodes(filename):
"""Create a dictionary { name, MSE-name : barcode }."""
ret = OrderedDict()
with open(filename, "r") as f:
lines = f.read().split("\n")
cols = lines[0].strip().split(',')
assert cols[1].lower() == "name"
#assert cols[2].lower() == "main_structure_element_id"
assert cols[3].lower() == "main_name"
assert cols[4].lower() == "barcode"
rows = [line.strip() for line in lines[1:] if line.strip() != ""]
for row in rows:
items = row.split(",")
ret[items[1], items[3]] = items[4]
return ret
def appendBarcodeUpdates(outputFile, barcodes):
"""Append an SQL UPDATE statement for barcodes."""
lines = []
for key in barcodes.keys():
name, main_name = key
update = "UPDATE ism.ism_structure_element SET barcode = '%s' WHERE main_structure_element_id = (SELECT id FROM ism.ism_main_structure_element WHERE name = '%s') AND name = '%s';" % (barcodes[key], main_name, name)
lines.append(update)
with open(outputFile, "w") as f:
for line in lines:
f.write(line + "\n")
if __name__ == "__main__":
barcodeFile = sys.argv[1]
barcodes = readBarcodes(barcodeFile)
sqlOutputFile = sys.argv[2]
appendBarcodeUpdates(sqlOutputFile, barcodes)