home / github / issue_comments

Menu
  • GraphQL API

issue_comments: 1032732242

This data as json

html_url issue_url id node_id user created_at updated_at author_association body reactions issue performed_via_github_app
https://github.com/simonw/sqlite-utils/issues/402#issuecomment-1032732242 https://api.github.com/repos/simonw/sqlite-utils/issues/402 1032732242 IC_kwDOCGYnMM49jj5S 25778 2022-02-08T15:26:59Z 2022-02-08T15:26:59Z CONTRIBUTOR What if you did something like this: ```python class Conversion: def __init__(self, *args, **kwargs): "Put whatever settings you need here" def python(self, row, column, value): # not sure on args here "Python step to transform value" return value def sql(self, row, column, value): "Return the actual sql that goes in the insert/update step, and maybe params" # value is the return of self.python() return value, [] ``` This way, you're always passing an instance, which has methods that do the conversion. (Or you're passing a SQL string, as you would now.) The `__init__` could take column names, or SRID, or whatever other setup state you need per row, but the row is getting processed with the `python` and `sql` methods (or whatever you want to call them). This is pretty rough, so do what you will with names and args and such. You'd then use it like this: ```python # subclass might be unneeded here, if methods are present class LngLatConversion(Conversion): def __init__(self, x="longitude", y="latitude"): self.x = x self.y = y def python(self, row, column, value): x = row[self.x] y = row[self.y] return x, y def sql(self, row, column, value): # value is now a tuple, returned above s = "GeomFromText(POINT(? ?))" return s, value table.insert_all(rows, conversions={"point": LngLatConversion("lng", "lat"))} ``` I haven't thought through all the implementation details here, and it'll probably break in ways I haven't foreseen, but wanted to get this idea out of my head. Hope it helps. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 1125297737  
Powered by Datasette · Queries took 1.004ms