Я относительно новичок в Python, поэтому я надеюсь, что только что пропустил что-то действительно очевидное ... Но все подобные вопросы / ответы здесь, в StackOverflow, кажутся действительно слишком сложными для простой задачи, которую я задаю пытаясь достичь.
У меня есть несколько сотен текстовых файлов, содержащих данные JSON (фактическая структура данных не важна, этот блок ниже просто показывает вам, что у меня есть, фактическая структура данных может сильно отличаться, но они всегда будут действительными JSON данных).
{
"config": {
"item1": "value1",
"item2": "value2"
},
"data": [
{
"dataA1": "valueA1",
"itemA2": "valueA2"
},
{
"dataB1": "valueB1",
"itemB2": "valueB2",
"itemB3": "valueB3"
}
]
}
Моя модель выглядит примерно так:
class ModelName(db.Model):
__tablename__ = 'table_name'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
data1 = db.Column(db.JSON)
data2 = db.Column(db.JSON)
У меня есть несколько столбцов данных здесь , data1
и data2
, просто чтобы я мог сделать визуальное сравнение вставленных данных. Конечная модель будет иметь только одно поле данных.
Вот вставка данных, в которой все, кажется, идет не так:
import json
new_record = ModelName(
name='Foo',
data1=open('./filename.json').read(),
data2=json.dumps(open('./filename.json').read(), indent=2)
)
try:
db.session.add(new_record)
db.session.commit()
print('Insert successful')
except:
print('Insert failed')
Данные, которые заканчиваются на data1
и data2
забит переменными числами \, чтобы избежать двойных кавычек и разрывов строк, плюс он оборачивает всю вставку данных в набор двойных кавычек. В результате данные просто невозможно использовать. Так что в настоящее время мне приходится копировать и вставлять данные в БД вручную, что, хотя эта утомительная задача работает отлично, но это далеко не то, что нужно делать.
Мне не нужно редактировать, манипулировать или делать что-либо с данными любым способом. Я просто хочу прочитать строку JSON из заданного файла и затем вставить ее содержимое в запись в базе данных, то есть это конец истории, ничего больше.
Есть ли действительно нет ПРОСТОЙ способ добиться этого?