you're inserting "my_string", which it's doing properly. I don't see any 
escaping of underscores either. if `my_string` is a variable, don't quote it 
when you pass it to, e.g. `db.exec(query,my_string)`

here `dbFormat` is lifted from `db_sqlite`
    
    
    import db_sqlite
    proc dbFormat(formatstr: SqlQuery, args: varargs[string]): string =
      result = ""
      var a = 0
      for c in items(string(formatstr)):
        if c == '?':
          add(result, dbQuote(args[a]))
          inc(a)
        else:
          add(result, c)
    
    let my_string = "hello"
    
    let qry = sql"INSERT INTO my_table (my_col) values (?)"
    
    var x = dbFormat(qry, "my_string")
    
    assert x.string == "INSERT INTO my_table (my_col) values ('my_string')"
    
    x = dbFormat(qry, my_string)
    
    assert x.string == "INSERT INTO my_table (my_col) values ('hello')"
    
    
    Run

Reply via email to