Формирование команды sql с объектом json завершается неудачно - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь создать команду sql с объектом json, которая может быть запущена скриптом python. Я придумал ниже сценарий. Метод func1 () работает, но не читается. func2 () - это то, к чему я стремлюсь, но не получается. Есть ли простой способ?

Я использую python3.4.

#!/usr/bin/env python3

def func1():
    url = "http://example.com:9000"
    user = "apple"
    password = "orange"
    kvp = '{"host": "' + url + '"' + ', "user: "' + user + '"}'
    sqlCmd1 = '"INSERT INTO hosts (config_info) VALUES(' + kvp + ');"'
    print("sqlcmd1:", sqlCmd1)

def func2():
    url = "http://example.com:9000"
    user = "apple"
    password = "orange"
    sqlCmd2 = 'INSERT INTO hosts (config_info) VALUES ({"host": "{0}"});'.format(url)
    print("sqlCmd2: ", sqlCmd2)

if __name__ == '__main__':
    func1()
    func2()


sqlcmd1: "INSERT INTO hosts (config_info) VALUES({"host": "http://example.com:9000", "user: "apple"});"
Traceback (most recent call last):
  File "./sql.py", line 20, in <module>
    func2()
  File "./sql.py", line 15, in func2
    sqlCmd2 = 'INSERT INTO hosts (config_info) VALUES ({"host": "{0}"});'.format(url)
KeyError: '"host"'

Код ниже работал.

def func2():
    url = "http://example.com:9000"
    user = "apple"
    password = "orange"
    sqlCmd2 = 'INSERT INTO hosts (config_info) VALUES ({{"host": "{0}", "user": "{1}","password": "{2}"}});'.format(url, user, password)
    print("sqlCmd2: ", sqlCmd2)
...