Я хочу вставить некоторые записи в mySQL
базу данных из PostgreSQL
, я использую приведенный ниже скрипт, но данные не вставляются в MySQL
базу данных.
Могу ли я узнать, что моглобыть причиной?
Также в этот код могут быть внесены какие-либо усовершенствования. Очень полезны предположения.
Примечание: получение данных из PostgreSQL (который напечатан и показан ниже)), Но вставка не происходит и ошибка не появляется.
import psycopg2
import os
import time
from mysql.connector import (connection)
import sys
def db():
# MySQLdb connection
try:
cnx_msql = connection.MySQLConnection(host='server.com',user='xxxxxx',passwd='xxxxxxxxxxx',port=xxxx,db='xxxxxx')
print('MySQL DB connected')
except mysql.connector.Error as e:
print (e.msg)
sys.exit(1)
# Postgresql connection
try:
cnx_psql =psycopg2.connect(host='IP Address',dbname='postgres',port='5433',user='postgres',
password='-------------')
print('PSQL DB connected')
except psycopg2.Error as e:
print('PSQL: Unable to connect!\n{0}').format(e)
sys.exit(1)
# Cursors initializations
cur_msql = cnx_msql.cursor()
cur_psql = cnx_psql.cursor()
SQL_test="""SELECT count(*) from status;"""
try:
SQL_load="""SELECT created_at,payload from staging.mag_sync;"""
msql_ins="""INSERT INTO status(created_at,payload)VALUES (%s, %s);"""
cur_psql.execute(SQL_load)
for row in cur_psql:
try:
print(str(row[0]) + ' : ' + row[1])
cur_msql.execute(msql_ins, str(row[0]),row[1])
cnx_msql.commit()
print('Data inserted')
except psycopg2.Error as e:
print('ffffffffffffff')
print ("Cannot execute the query!!", e.pgerror)
sys.exit(1)
cnx_msql.commit()
cur_msql.execute(SQL_test)
records = cur_msql.fetchall()
for row in records:
print("count = ", row[0], )
except (Exception, psycopg2.Error) as error:
print ("Error while fetching data from PostgreSQL", error)
finally:
## Closing cursors
cur_msql.close()
cur_psql.close()
## Committing
cnx_psql.commit()
## Closing database connections
cnx_msql.close()
cnx_psql.close()
if __name__ == '__main__':
db()
Ниже выводится,
MySQL DB connected
PSQL DB connected
2019-10-23 03:55:30 : {"action":"updateOrder",{"data" : {"order_id":624385,"status":"canceled","state":"canceled"}}}
INSERT INTO status(created_at,payload)VALUES (%s, %s);
Data inserted
2019-10-23 03:55:30 : {"action":"updateOrder",{"data" : {"order_increment":"100597818","status":"processing","state":"processing","tracking_number":"93262148670013 ","shipment_status":0}}}
INSERT INTO status(created_at,payload)VALUES (%s, %s);
Data inserted
2019-10-23 03:55:30 : {"action":"createInvoice",{"data" : {"order_increment":"100597818"}}}
INSERT INTO status(created_at,payload)VALUES (%s, %s);
Data inserted
2019-10-23 03:55:30 : {"action":"updateOrder",{"data" : {"order_id":614048,"status":"complete","state":"complete","tracking_number":"","shipment_status":0}}}
INSERT INTO status(created_at,payload)VALUES (%s, %s);
Data inserted
count = 0
>>>
Примечание. Я удалил раздел TRY / CATCH ипопытался, но не выдает ошибку, показывает сообщение «Данные вставлены», но это не так.