0

最初に、これは python と postgresql の混合の質問であることを述べたいと思います。私は現在、すべての SQL 関連のものを処理する tortoise-orm を使用していますが、今日は JSONB フィールドへの挿入中にスタックしました。ここに私のテーブルがあります:

class PointsInfo(models.Model):
    class Meta:
        table = "pt_info"

    id = fields.BigIntField(pk=True, index=True)
    guild_id = fields.BigIntField(index=True)
    kill_points = fields.IntField(default=1)
    posi_points = fields.JSONField(default=dict)
    default_format = fields.IntField(default=1)
    data: fields.ManyToManyRelation["PointsTable"] = fields.ManyToManyField("models.PointsTable", index=True)


class PointsTable(models.Model):
    class Meta:
        table = "pt_data"

    id = fields.BigIntField(pk=True, index=True)
    points_table = fields.JSONField()
    created_by = fields.DatetimeField()
    created_at = fields.DatetimeField(auto_now=True, index=True)
    edited_at = fields.DatetimeField(null=True)
    channel_id = fields.BigIntField(null=True)
    message_id = fields.BigIntField(null=True)

テーブルに行を挿入し、その行をテーブルの列pt_dataに追加したいdatapt_info

_dict = {'quotient': [1, 20, 20, 40], 'butterfly': [2, 14, 14, 28], '4pandas': [3, 10, 8, 18], 'kite': [4, 10, 5, 15]}

table = await PointsTable.create(points_table=_dict, created_by= 123456789)
points= await PointsInfo.get(id=3)
await points.data.add(table)

しかし、これを行っているときにエラーが発生します:

File "/home/deadshot/softs/softs/total-quotient/Quotient-Bot/.venv/lib/python3.8/site-packages/tortoise/models.py", line 655, in __init__
    for key in meta.fields.difference(self._set_kwargs(kwargs)):
  File "/home/deadshot/softs/softs/total-quotient/Quotient-Bot/.venv/lib/python3.8/site-packages/tortoise/models.py", line 682, in _set_kwargs
    setattr(self, key, field_object.to_python_value(value))
OSError: [Errno 75] Value too large for defined data type

idk なぜ python はその dict を解析できなかったのか

私は tortoise-orm でこれを行っているので、生の SQL でこれを行いたいです。生の SQL の経験はあまりありません。基本は知っていますが、これは私にとって高度です。

ここで何をすべきですか?ここで達成したいことについて生の SQL クエリを書くのを手伝ってもらえますか?

ありがとう。

4

0 に答える 0