Executing SQL queries in loop induced unnecessary calculation by the CPU, RAM usage and network transfer.

Non compliant Code Example

def foo():
    ...
    results = []
    for id in range(20):
      results.append(cursor.execute("SELECT name FROM users where id = ?", (id)).fetchone()) # Noncompliant {{Avoid performing SQL queries within a loop}}
    ...

Compliant Solution

def foo():
    ...
    ids = range(20)
    results = cursor.execute("SELECT name FROM users where id IN ({0})".format(', '.join("?" * len(ids))), ids).fetchmany() # Compliant
    ...
}