#python-3.x #sqlite
Вопрос:
Я получаю сообщение json через RabbitMQ и хочу сохранить его в базе данных.
Сообщение выглядит так:
message ={
"ticket": "ticket_12334345",
"items" : ["item1","item2","item3"],
"prices" : [10,20,15],
"full price" : [45]
}
Хранение в базе данных выглядит следующим образом:
def callback(ch, method, properties, body):
print("%r" % body)
body = json.loads(body)
conn = sqlite3.connect('pythonDB.db')
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS Table_3 (ticket TEXT, items TEXT, prices INTEGER,'
'FullPrice INTEGER)')
c.execute("INSERT INTO Table_3 VALUES(?,?,?,?)", (body["ticket"],
body["items"], body["prices"], body["full price"],
))
conn.commit()
Я получаю сообщение об ошибке sqlite3.Ошибка интерфейса: Параметр привязки ошибки 0 — возможно, неподдерживаемый тип.
Я предполагаю, что это потому, что я неправильно храню данные списка. Я хочу, чтобы в столбце были все значения из списка в одной ячейке.
Ответ №1:
Используйте функцию str (), например:
def callback(ch, method, properties, body):
print("%r" % body)
body = json.loads(body)
conn = sqlite3.connect('pythonDB.db')
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS Table_3 (ticket TEXT, items TEXT, prices INTEGER,'
'FullPrice INTEGER)')
c.execute("INSERT INTO Table_3 VALUES(?,?,?,?)", (body["ticket"],
str(body["items"]), str(body["prices"]), str(body["full price"][0]),
))
conn.commit()