Search operations in Python are performed using the Cursor methods
find()
orsearch()
. The find() method locates an object in the database. It returns an object instance orNone
if not found. The search() method locates an object in the cursor orNone
if not found. Then the Cursor navigation methodsfirst(), last(), next()
andprev()
can be used to scroll through the cursor.The following code snippet demonstrates a find and search operation:
conn = db.connect() conn.startTransaction(exdb.Transaction.MCO_READ_WRITE) # Perform simple index search: locate Record by id cursor = conn.cursor() # find record to update rec = cursor.find("Record", "by_i4", 2) ... cursor.close() #release cursor conn.commit() # commit changes conn.startTransaction() cursor = conn.cursor() cursor.search("Security", "by_SIC", exdb.Operation.Equals, SIC) ... cursor.close() conn.rollback()SQL Queries
The Cursor can also be used to execute SQL queries with methods
execute()
and execute_many() . The result sets from SQL queries can then be processed using the methodsfetchone(), fetchmany()
orfetchall()
. For example:conn = db.connect() cursor = conn.cursor() cursor.execute("SELECT * FROM Metatable WHERE TableName='%s'" % clsname) res = cursor.fetchall() ... sql = "INSERT INTO Quote(ikey, symbol, stamp, low, high, open, close, volume) VALUES (?,?,?,?,?,?,?,?)" params = [] for i in xrange(N_QUOTES / 2, N_QUOTES): params.append((i, 'AA%s' % i, datetime.datetime(2017, 8, 16, 9, 30+i), 1.0, 4.0, 2.0, 3.0, i*1000)) cursor.execute_many(sql, params) ... cursor.close() conn.rollback() cursor = conn.cursor() sql = "SELECT ikey, symbol, stamp, low, high, open, close, volume FROM Quote ORDER BY ikey" cursor.execute(sql) count = 0 while True: row=cursor.fetchone() if row is None: break print "Row read:", row count += 1 ... cursor.close() conn.rollback()