Обновление данных в postgres с помощью python API

У меня есть API Python, который попадает по URL-адресу и получает JSON. Есть таблица с данными заказа

Order_id   ZipCode   delivery_date   total

JSON, возвращаемый API, содержит город и состояние передаваемого почтового индекса.

Я хочу :

  • Добавить новый столбец в таблицу City and State
  • Обновите столбец 2 выше на основе соответствующего почтового индекса.

Как это можно сделать через python?


person Firstname    schedule 02.11.2017    source источник
comment
Это можно сделать. Но вы должны написать код самостоятельно. Если вы уже пробовали это, но код не сработал, отредактируйте свой вопрос и объясните, что вы пробовали, а что не сработало, как ожидалось. Как спросить   -  person Håken Lid    schedule 02.11.2017


Ответы (1)


вы можете использовать адаптер, чтобы сначала установить соединение с python, например psycopg2 или sqlalchemy.

используя psycopg2

import psycopg2


class Postgres(object):
    """docstring for Postgres"""
    _instance = None

    def __new__(cls):
       if cls._instance is None:
           cls._instance = object.__new__(cls)
           # normally the db_credenials would be fetched from a config file or the enviroment
           # meaning shouldn't be hardcoded as follow
           db_config = {'dbname': 'demo', 'host': 'localhost',
                 'password': 'postgres', 'port': 5432, 'user': 'postgres'}
           try:
               print('connecting to PostgreSQL database...')
               connection = Postgres._instance.connection = 
               psycopg2.connect(**db_config)
               cursor = Postgres._instance.cursor = connection.cursor()
               cursor.execute('SELECT VERSION()')
               db_version = cursor.fetchone()

           except Exception as error:
               print('Error: connection not established {}'.format(error))
               Postgres._instance = None

           else:
               print('connection established\n{}'.format(db_version[0]))

       return cls._instance

   def __init__(self):
       self.connection = self._instance.connection
       self.cursor = self._instance.cursor

   def write(self, query):
       try:
           self.cursor.execute(query)
       except Exception as error:
           print('error execting query "{}", error: {}'.format(query, error))
           return None


   def read(self, query):
       try:
           self.cursor.execute(query)
           return self.cursor.fetchall()
       except Exception as error:
           print('error execting query "{}", error: {}'.format(query, error))
           return None
       else:
           return result

   def __del__(self):
       self.connection.close()
       self.cursor.close()

а затем создайте экземпляр класса postgress и вызовите метод чтения или записи, указав, если целью является запись или чтение из базы данных.

person rachid el kedmiri    schedule 02.11.2017