Search code examples
pythonsqldatabasetuplesdatabase-performance

SQL query format


I have a list of string that I need to pass to an sql query.

        listofinput = []
        for i in input:
         listofinput.append(i)
        if(len(listofinput)>1):
         listofinput = format(tuple(listofinput))
sql_query = f"""SELECT *  FROM countries
                                where
                                name in {listofinput};
                                """

This works when I have a list, but in case of just one value it fails.

as listofinput = ['USA'] for one value 
but listofinput ('USA', 'Germany') for multiple

also I need to do this for thousands of input, what is the best optimized way to achieve the same. name in my table countries is an indexed column


Solution

  • You can just convert to tuple and then if the second last character is a coma, remove it.

    listofinput = format(tuple(input))
    
    if listofinput[-2] == ",":
        listofinput = f"{listofinput[:-2]})"
    
    sql_query = f"""SELECT *  FROM countries
    where name in {listofinput};"""