I found some odd behavior with this function that isn't mentioned anywhere in the documentation.
If you perform an "INSERT" using SQLite3::query(), it will return an SQLite3Result object. If you then call reset() on this object, it will repeat the INSERT query, creating a duplicate entry in the database.