Guest User

Untitled

a guest
Oct 22nd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. cursor = conn.cursor()
  2. cursor.prepare(query)
  3. cursor.executemany(query, list_of_tuples_of_values)
  4. rows_affected = cursor.rowcount
  5. conn.commit()
  6.  
  7. def _fix_for_params(self, query, params, unify_by_values=False):
  8. # cx_Oracle wants no trailing ';' for SQL statements. For PL/SQL, it
  9. # it does want a trailing ';' but not a trailing '/'. However, these
  10. # characters must be included in the original query in case the query
  11. # is being passed to SQL*Plus.
  12. if query.endswith(';') or query.endswith('/'):
  13. query = query[:-1]
  14. if params is None:
  15. params = []
  16. elif hasattr(params, 'keys'):
  17. # Handle params as dict
  18. args = {k: ":%s" % k for k in params}
  19. query = query % args
  20. elif unify_by_values and len(params) > 0:
  21. # Handle params as a dict with unified query parameters by their
  22. # values. It can be used only in single query execute() because
  23. # executemany() shares the formatted query with each of the params
  24. # list. e.g. for input params = [0.75, 2, 0.75, 'sth', 0.75]
  25. # params_dict = {0.75: ':arg0', 2: ':arg1', 'sth': ':arg2'}
  26. # args = [':arg0', ':arg1', ':arg0', ':arg2', ':arg0']
  27. # params = {':arg0': 0.75, ':arg1': 2, ':arg2': 'sth'}
  28. params_dict = {param: ':arg%d' % i for i, param in enumerate(set(params))}
  29. args = [params_dict[param] for param in params]
  30. params = {value: key for key, value in params_dict.items()}
  31. query = query % tuple(args)
  32. else:
  33. # Handle params as sequence
  34. args = [(':arg%d' % i) for i in range(len(params))]
  35. query = query % tuple(args) <==============
  36. return query, self._format_params(params)
Add Comment
Please, Sign In to add comment