geldata / geldata/gel-python

Issue with Inserting Byte String JSON into EdgeDB using `orjson`

Open
#502 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
415
Forks
50
PR merge metrics
No merged PRs in 30d

Description

Hello everyone,

I'm having trouble inserting JSON data serialized as a byte string into an EdgeDB query. I'm using the `orjson` library to serialize the JSON into a byte string, and I want to decode and insert this data into the database using the `json_array_unpack` function.

Here is the code I'm trying to use:

```python
import orjson
from edgedb import create_async_client

# Data to serialize
data = [{"name": "example_name"}]

# Serializing the data to a byte string JSON
serialized_data = orjson.dumps(data)

# Creating the EdgeDB client (assuming you have the correct client configuration)
client = create_async_client()

async def insert_data(client, serialized_data):
await client.query_json("""
WITH
raw_data := $data
FOR item IN json_array_unpack(raw_data) UNION (
UPDATE Post SET {
name := item['name']
}
)
""", data=serialized_data)

# Calling the data insertion function
import asyncio
asyncio.run(insert_data(client, serialized_data))
```

**Problem:**

When trying to execute the query, I am unable to insert the data correctly. I've tried various configurations, but it seems that the database is not properly interpreting the byte string JSON that I'm passing as the `$data` parameter.

**Questions:**

1. **How should I correctly pass a byte string JSON in the EdgeDB query?**
2. **Is there a better way to handle and decode byte string JSONs directly within the EdgeDB query?**
3. **Could someone provide a working example of how to do this?**

Any help would be greatly appreciated!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.