Новый для 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)