home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 1248474806

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/489#issuecomment-1248474806 https://api.github.com/repos/simonw/sqlite-utils/issues/489 1248474806 IC_kwDOCGYnMM5Kaja2 9599 2022-09-15T18:48:09Z 2022-09-15T18:48:09Z OWNER

Built a prototype of this that works really well: diff diff --git a/sqlite_utils/utils.py b/sqlite_utils/utils.py index c0b7bf1..f9a482c 100644 --- a/sqlite_utils/utils.py +++ b/sqlite_utils/utils.py @@ -272,7 +272,19 @@ def rows_from_file( if format == Format.JSON: decoded = json.load(fp) if isinstance(decoded, dict): - decoded = [decoded] + # TODO: Solve for if this isn't what people want + # Does it have just one key that is a list of dicts? + list_keys = [ + k + for k in decoded + if isinstance(decoded[k], list) + and decoded[k] + and all(isinstance(o, dict) for o in decoded[k]) + ] + if len(list_keys) == 1: + decoded = decoded[list_keys[0]] + else: + decoded = [decoded] if not isinstance(decoded, list): raise RowsFromFileBadJSON("JSON must be a list or a dictionary") return decoded, Format.JSON I used that to build this: https://gist.github.com/simonw/0e6901974a14ab7d56c2746a04d72c8c

One problem though: right now, if you do this sqlite-utils treats it as a single object and adds a tags column with JSON in it: echo '{"title": "Hi", "tags": [{"t": "one"}]}` | sqlite-utils insert db.db t - If I implement this new mechanism the above line would behave differently - which would be a backwards incompatible change.

So I probably need some kind of opt-in mechanism for this. And I need a good name for it.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
1374939463  
Powered by Datasette · Queries took 0.848ms · About: github-to-sqlite