SQL query with parameters

Viewed 38

I use SQLite to merge two dataframes I have parameters in. Some work, others don't.

This works:

    s = path_autre_qdv+'\\' + fichier_in
    DATA = p.read_csv(s)
    con = sql.connect('test_db.sqlite')
    con.create_function('POWER', 2, sqlite_power)
    c = con.cursor()
    COM_DETAIL.to_sql('COM_DETAIL_SQL', con, if_exists='replace', index = False)
    DATA.to_sql('DATA_SQL', con, if_exists='replace', index = False)
    
    sq = """
            SELECT 
                c.COM_CODE
                ,c.COM_NAME
                ,c.COM_LONG
                ,c.COM_LAT
                ,d.*
            FROM 
                COM_DETAIL_SQL c
            INNER JOIN 
                DATA_SQL d
                ON POWER((c.COM_LONG - d.longitude)/ ? ,2) + POWER((c.COM_LAT - d.latitude)/ ? ,2) <= 1;
            """
    par = (0.5, 0.5,)
    RES = read_query(con,sq,par)

This doesn't:

s = path_autre_qdv+'\\' + fichier_in
DATA = p.read_csv(s)
con = sql.connect('test_db.sqlite')
con.create_function('POWER', 2, sqlite_power)
c = con.cursor()
COM_DETAIL.to_sql('COM_DETAIL_SQL', con, if_exists='replace', index = False)
DATA.to_sql('DATA_SQL', con, if_exists='replace', index = False)

sq = """
        SELECT 
            c.COM_CODE
            ,c.COM_NAME
            ,c.COM_LONG
            ,c.COM_LAT
            ,d.*
        FROM 
            COM_DETAIL_SQL c
        INNER JOIN 
            DATA_SQL d
            ON POWER((c.COM_LONG - d.longitude)/ ? ,2) + POWER((c.COM_LAT - d.latitude)/ ? ,2) <= 1
            AND d.? IS NOT NULL AND d.? IS NOT NULL AND d.? IS NOT NULL;
        """
par = (0.5, 0.5,cinqv,meanv,nonentecinqv,)
RES = read_query(con,sq,par)

Difference is last filter, with three new parameters: cinqv, meanv and nonentecinqv given in input of the function, and are columns of DATA dataframe.

The error :

OperationalError: near "?": syntax error
0 Answers
Related