@@ -393,18 +393,17 @@ def similar_mac(connection: sqlite3.Connection, mac_prefix: str) -> Set[str]:
393393
394394
395395def find_serology_for_allele (
396- connection : sqlite3 .Connection , allele_name : str
396+ connection : sqlite3 .Connection , allele_name : str , column : str = "allele_list"
397397) -> Dict [str , str ]:
398398 """
399399 Find similar alleles starting with the provided allele_name.
400400
401401 :param connection: db connection of type sqlite.Connection
402402 :param allele_name: Allele name to use as a prefix to find similar alleles
403+ :param column: Column to look for allele, "allele_list" or "lgx_allele_list"
403404 :return: list of similar alleles
404405 """
405- query = (
406- "SELECT serology, allele_list FROM serology_mapping WHERE allele_list LIKE ?"
407- )
406+ query = f"SELECT serology, { column } FROM serology_mapping WHERE { column } LIKE ?"
408407 cursor = connection .execute (query , (f"%{ allele_name } %" ,))
409408 results = cursor .fetchall ()
410409 # fetchall() returns a list of tuples of results
@@ -574,12 +573,26 @@ def save_mac_codes(db_connection, mac, mac_table_name):
574573
575574def save_serology_mappings (db_connection , sero_mapping ):
576575 # Save the serology mapping to db
577- save_dict (
578- db_connection ,
579- table_name = "serology_mapping" ,
580- dictionary = sero_mapping ,
581- columns = ("serology" , "allele_list" ),
582- )
576+ cursor = db_connection .cursor ()
577+ # Drop the table first
578+ cursor .execute ("DROP TABLE IF EXISTS serology_mapping" )
579+ # Create table
580+ create_table_sql = f"""CREATE TABLE serology_mapping (
581+ serology TEXT PRIMARY KEY,
582+ allele_list TEXT NOT NULL,
583+ lgx_allele_list TEXT NOT NULL
584+ )"""
585+ cursor .execute (create_table_sql )
586+
587+ rows = ((k , v [0 ], v [1 ]) for k , v in sero_mapping .items ())
588+
589+ # insert
590+ cursor .executemany (f"INSERT INTO serology_mapping VALUES (?, ?, ?)" , rows )
591+
592+ # commit transaction - writes to the db
593+ db_connection .commit ()
594+ # close the cursor
595+ cursor .close ()
583596
584597
585598def load_v2_v3_mappings (db_connection ):
0 commit comments