|
22 | 22 | from .misc import import_script, log_progress
|
23 | 23 | from .pg import column_exists, column_type, get_max_workers, table_exists
|
24 | 24 |
|
| 25 | +# python3 shims |
| 26 | +try: |
| 27 | + basestring # noqa: B018 |
| 28 | +except NameError: |
| 29 | + basestring = unicode = str |
| 30 | + |
25 | 31 | _logger = logging.getLogger(__name__)
|
26 | 32 | utf8_parser = html.HTMLParser(encoding="utf-8")
|
27 | 33 |
|
@@ -248,17 +254,22 @@ def _dumps(self, node):
|
248 | 254 |
|
249 | 255 |
|
250 | 256 | class Convertor:
|
251 |
| - def __init__(self, converters, callback, dbname, update_query): |
| 257 | + def __init__(self, converters, callback, dbname=None, update_query=None): |
252 | 258 | self.converters = converters
|
253 | 259 | self.callback = callback
|
254 | 260 | self.dbname = dbname
|
255 | 261 | self.update_query = update_query
|
256 | 262 |
|
257 | 263 | def __call__(self, query):
|
| 264 | + # backwards compatibility |
| 265 | + if not (self.dbname and self.update_query and isinstance(query, basestring)): |
| 266 | + return self._convert_row(query) |
| 267 | + # called with a query to fetch a number of rows |
258 | 268 | with db_connect(self.dbname).cursor() as cr:
|
259 | 269 | cr.execute(query)
|
260 | 270 | for changes in filter(None, map(self._convert_row, cr.fetchall())):
|
261 | 271 | cr.execute(self.update_query, changes)
|
| 272 | + return None |
262 | 273 |
|
263 | 274 | def _convert_row(self, row):
|
264 | 275 | converters = self.converters
|
|
0 commit comments