Получите данные таблицы в JSON из Oracle БД и загрузите в SQL сервер БД, используя Python (3.7) - PullRequest
0 голосов
/ 24 марта 2020

Новый для Python и JSON, я пытаюсь сделать следующее в Python 3.7:

1.Подключиться к Oracle базе данных

2.Получить данные из указанной c таблицы в правильном JSON выводе

3.Соединить с SQL сервером

4.Загрузить данные с шага 2. в соответствующую таблицу на SQL Сервере (таблица там уже создан)

Я не уверен, как получить имя таблицы в JSON выводе на шаге 2 и как дополнительно загрузить его на SQL сервер, используя Python. В данный момент я получаю такой вывод JSON без имени таблицы:

[
 {
  "col1": 128583,
  "col2": "surname",
  "col3": "93 3j-039"
 }
]

И вот код на данный момент:

import cx_Oracle
import pyodbc
import json
import MySQLdb


#Connect to Oracle DB and get table data output as JSON object
dsn_tns = cx_Oracle.makedsn('xxx', 'xxx', 'xxx')
conn = cx_Oracle.connect(user='xxx', password='xxx', dsn=dsn_tns)
c = conn.cursor()

#Allows to pass date objects
class DatetimeEncoder(json.JSONEncoder):
    def default(self, obj): # pylint: disable=method-hidden
        try:
            return super(DatetimeEncoder, obj).default(obj)
        except TypeError:
            return str(obj)

cursor = conn.cursor()
cursor.execute('select * from test_table' )

r = [dict((cursor.description[i][0], value) \
               for i, value in enumerate(row)) for row in cursor.fetchall()]
print(json.dumps(r,cls=DatetimeEncoder, indent=2))  #How to return name of table as well?

#SQL Server import data
#Connect to SQL Server
server = 'xxx'
database = 'xxx'
username = 'xxx'
password = 'xx'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

# not a working code at the moment, just a rough idea
def insertDb():
    try:
        cursor.execute("""
        INSERT INTO nameoftable(nameofcolumn) \
        VALUES (%s) """, (row))
        cursor.close()
    except Exception as e:
        print (e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...