Creating a query

Although optional, querying a good way to specify what you’re after.

Using key-value

Simple. And sufficient in many cases.

# Query incident records with 'number' that equals 'INC012345'
r = s.query(table='incident', query={'number': 'INC012345'})

Using the query builder

The recommended way to create complex queries.

See the pysnow.QueryBuilder() documentation for more details.

from datetime import datetime as dt
from datetime import timedelta as td

# Set start and end range
start = dt(1970, 1, 1)
end = dt.now() - td(days=20)

# Query incident records with number starting with 'INC0123', created between 1970-01-01 and 20 days back in time
qb = (
    pysnow.QueryBuilder()
    .field('number').starts_with('INC0123')
    .AND()
    .field('sys_created_on').between(start, end)
)

r = s.query('incident', query=qb)

SN Pass-through

It’s recommended to use the query builder for complex queries, as it offers error handling and a cleaner way to create queries.

However, you can still use SN pass-through queries should the query builder not satisfy your needs for some reason.

This is a pass-through equivalent of the QB example above.

from datetime import datetime as dt
from datetime import timedelta as td

# Set start and end range
start = dt(1970, 1, 1)
end = dt.now() - td(days=20)

# Query incident records with number starting with 'INC0123', created between 1970-01-01 and 20 days back in time
r = s.query(table='incident', query='numberSTARTSWITHINC0150^sys_created_onBETWEENjavascript:gs.dateGenerate("%s")@javascript:gs.dateGenerate("%s")' % (start, end))