POST-данные и создание REST API с помощью Python / Flask - PullRequest
0 голосов
/ 04 марта 2020

Я начинаю с REST API и мне нужно разработать API для вставки значений в базу данных PG.

Я буду использовать эту конечную точку API ("/ myendpoint") в другом приложении Flask с помощью метода: r = requests.post('https:/myendpoint', params=payload, verify=False)

api.py:

  def insert_values(schema, table_name, list_values):
     cursor2 = connection.cursor() 
     cursor2.execute("INSERT INTO "+schema+"."+table_name+" VALUES "+str(list_values)+ ";")
     connection.commit()




@app.route('/myendpoint', methods=("POST","GET","PUT"))
def insert():
  if request.method == 'POST':
    if request.args['key']=="hello":
      table = request.args.get('table')

      connect_to_db()
      insert_values(schema, table, ('hello','world'))
      #close DB connexion
      close_db_connect()

    return'''<h1>INSERT INTO PG</h1>'''

Как я могу исправить код, чтобы мои ('привет', 'мир') данные непосредственно в тело, когда я проверяю свою связь на Почтальоне? Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Вы пропускаете значения при вызове метода. insert_values(table, ('hello','world')) должно быть insert_values(table, ('hello','world'), another_something), а когда вы отправляете ('hello','world'), вы отправляете кортеж.

Если я не понял правильно, вы должны назвать как insert_values('my_schema', 'my table',['va1', 'val2']).

Затем по запросу cursor2.execute("INSERT INTO {}.{} VALUES {};".format(schema, table_name, ', '.join(list_values)))

...