Как правильно записать json в mysql используя pymysql?

уважаемые знатоки, имеется контейнер с mysql и словарь содержащий данные из git, словарь конвертирован в json Не могу понять как записать данный файл в БД и как сделать это правильно, так чтобы ключ ушел в один столбик а значение в другой

Я в python'e всего неделю, жду жесткой но конструктивной критики и прошу у вас ссылки, ибо все что я накопал в инете мне не дало и дюйма решения нехватки данной информации

import mysql.connector
import json
import mysql
import pymysql
import pymysql.cursors
from PythonGIT import Lastwords

#make json data from Lastwords
json_send = json.dumps(Lastwords, indent=4)
#print(json_send)
#make connect to DB
def create_connection(host_name, host_port, user_name, user_password, db_name):
    connection = None
    try:
        connection = mysql.connector.connect(
            host=host_name,
            port=host_port,
            user=user_name,
            passwd=user_password,
            database=db_name
        )
        print("Connection to MySQL DB successful")
    except Error as e:
        print(f"The error '{e}' occurred")

    return connection
connection = create_connection("localhost", 3306, "root", "My:S3cr3t/", "jiragit")
cursor = connection.cursor(pymysql.cursors.DictCursor)
#send json to DB
# json_send
# sql = ""
with cursor:
    sql = "CREATE TABLE IF NOT EXISTS jiragit ( JiraTicket TEXT, EVENT TEXT) VALUES (%s,%s)"
    cursor.execute(sql, json_send)




connection.commit()
#Close connections
connection.close()
print("Connect close")

Json

"MID-4151": [
        [
            "7e5ac616df12ed6fb344c8cf1817e5a9f4ee6c34",
            "kurbat_kanstantsin"
        ],
        [
            "1f201a2c10e12f3781afb7cf52e0b24530ee22da",
            "kurbat_kanstantsin"
        ],
        [
            "e473e1b77857fa2ef6e34c7f4117e48d1149cb4c",
            "kkurbat"
        ],
        [
            "41085f9b17a02b1773da26291573be51dd7c44fc",
            "kkurbat"
        ]
    ],
    "IN-2558": [
        [
            "18a382da0903bc4c1aa8dbdc09423e6120293409",
            "artem"
        ],
        [
            "f28fee874a30b854536ace422f401181b70d6f28",
            "artem"
        ],
        [
            "c5f4b78781e1495c21fc02bf5a696835a1eab431",
            "artem"
        ],
        [
            "313b300d2e4ae3eb17f62cf2acd6d00713df0ca9",
            "artem"
        ],
        [
            "2a7a1a6517ffb71f5a0d1da3cf18bd6c511102d0",
            "artem"
        ]
    ],

dict

{'CE-2019': [('a3873de1b37c14ea2d9379387026da6188cdd5d2', 'Ivan Vdovin'), ('327f430f39dd2db0c4ad9bb8fa599d7be7b1b4df', 'dmitrykoptik')], 'Merge_or_Fix': [('467f483d9fac6f2a587065ad6c3eeb4557b430bc', 'Stanislav Dudkov aka D2269'), ('1565ec5429da1156b593ea16658409288176edbe', 'Petr Sabaleuski'), ('2bda4e434cbe9271e9719feb16d27b04058d689f', 'Petr Sabaleuski'), ('caf6ee5460645a2691aeb03693a94327fd6833e7', 'Alex_Odinokov'),

Ответы (1 шт):

Автор решения: Namerek

Вопрос:

JiraTicket EVENT
MID-4151 [["7e5ac616df12ed6fb344c8cf1817e5a9f4ee6c34", "kurbat_kanstantsin"], ["1f201a2c10e12f3781afb7cf52e0b24530ee22da", "kurbat_kanstantsin"], ["e473e1b77857fa2ef6e34c7f4117e48d1149cb4c", "kkurbat"], ["41085f9b17a02b1773da26291573be51dd7c44fc", "kkurbat"]]
IN-2558 [["18a382da0903bc4c1aa8dbdc09423e6120293409", "artem"], ["f28fee874a30b854536ace422f401181b70d6f28", "artem"], ["c5f4b78781e1495c21fc02bf5a696835a1eab431", "artem"], ["313b300d2e4ae3eb17f62cf2acd6d00713df0ca9", "artem"], ["2a7a1a6517ffb71f5a0d1da3cf18bd6c511102d0", "artem"]]

Вы Так представляете себе таблицу или как-то иначе?

create table test_scm.jira_git
(
    JiraTicket text,
    EVENT      json
);

UPD:

Вот что-то такое попробуйте:

  • Библиотека для работы с БД не та что у Вас но тоже хорошая, а принципы работы с ними идентичные.
  • И, кстати, Вам правильно сказали на счет того, что json у вас не валидный.
from pymysql.cursors import Cursor
from pymysql import connect
import simplejson as json

conn = connect(
    host='localhost',
    port=3306,
    user='user',
    password='********',
    autocommit=True,
    database='db'
)

cur: Cursor = conn.cursor()

# В случае если Ваш JSON уже словарь
data = {
    "MID-4151": [
        [
            "7e5ac616df12ed6fb344c8cf1817e5a9f4ee6c34",
            "kurbat_kanstantsin"
        ],
        [
            "1f201a2c10e12f3781afb7cf52e0b24530ee22da",
            "kurbat_kanstantsin"
        ],
        [
            "e473e1b77857fa2ef6e34c7f4117e48d1149cb4c",
            "kkurbat"
        ],
        [
            "41085f9b17a02b1773da26291573be51dd7c44fc",
            "kkurbat"
        ]
    ],
    "IN-2558": [
        [
            "18a382da0903bc4c1aa8dbdc09423e6120293409",
            "artem"
        ],
        [
            "f28fee874a30b854536ace422f401181b70d6f28",
            "artem"
        ],
        [
            "c5f4b78781e1495c21fc02bf5a696835a1eab431",
            "artem"
        ],
        [
            "313b300d2e4ae3eb17f62cf2acd6d00713df0ca9",
            "artem"
        ],
        [
            "2a7a1a6517ffb71f5a0d1da3cf18bd6c511102d0",
            "artem"
        ]
    ]
}

# В случае если Ваш JSON - строка - воспользуйтесь `json.loads()`


def prepare_data(item):
    key, val = item
    return key, json.dumps(val)


cur.executemany(
    "insert into test_scm.jira_git ( JiraTicket, EVENT ) values (%s, %s) ",
    [
        *map(prepare_data, data.items())
    ]
)
→ Ссылка