Update `tables` with clause `where` (interpolated using `vars`) and setting `values`. >>> db = DB(None, {}) >>> name = 'Joseph' >>> q = db.update('foo', where='name = $name', name='bob', age=2, ... created=SQLLiteral('NOW()'), var
(self, tables, where, vars=None, _test=False, **values)
| 1088 | return out |
| 1089 | |
| 1090 | def update(self, tables, where, vars=None, _test=False, **values): |
| 1091 | """ |
| 1092 | Update `tables` with clause `where` (interpolated using `vars`) |
| 1093 | and setting `values`. |
| 1094 | |
| 1095 | >>> db = DB(None, {}) |
| 1096 | >>> name = 'Joseph' |
| 1097 | >>> q = db.update('foo', where='name = $name', name='bob', age=2, |
| 1098 | ... created=SQLLiteral('NOW()'), vars=locals(), _test=True) |
| 1099 | >>> q |
| 1100 | <sql: "UPDATE foo SET age = 2, created = NOW(), name = 'bob' WHERE name = 'Joseph'"> |
| 1101 | >>> q.query() |
| 1102 | 'UPDATE foo SET age = %s, created = NOW(), name = %s WHERE name = %s' |
| 1103 | >>> q.values() |
| 1104 | [2, 'bob', 'Joseph'] |
| 1105 | """ |
| 1106 | if vars is None: |
| 1107 | vars = {} |
| 1108 | |
| 1109 | where = self._where(where, vars) |
| 1110 | values = sorted(values.items(), key=lambda t: t[0]) |
| 1111 | |
| 1112 | query = ( |
| 1113 | "UPDATE " |
| 1114 | + sqllist(tables) |
| 1115 | + " SET " |
| 1116 | + sqlwhere(values, ", ") |
| 1117 | + " WHERE " |
| 1118 | + where |
| 1119 | ) |
| 1120 | |
| 1121 | if _test: |
| 1122 | return query |
| 1123 | |
| 1124 | db_cursor = self._db_cursor() |
| 1125 | self._db_execute(db_cursor, query) |
| 1126 | if not self.ctx.transactions: |
| 1127 | self.ctx.commit() |
| 1128 | return db_cursor.rowcount |
| 1129 | |
| 1130 | def delete(self, table, where, using=None, vars=None, _test=False): |
| 1131 | """ |
no test coverage detected