вставить в MySQL не происходит через Python - PullRequest
0 голосов
/ 23 октября 2019

Я хочу вставить некоторые записи в 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 ипопытался, но не выдает ошибку, показывает сообщение «Данные вставлены», но это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...