Как я могу успешно вставить столбцы строк, выбранные из таблицы MySQL, в таблицу MSSQL назначения, используя Python? - PullRequest
1 голос
/ 18 октября 2011

Этот скрипт Python подключается к базе данных MySQL и базе данных MssQL 2008 R2. База данных MySQL работает на Linux Ubuntu 11.04. MssQL 2008 работает на Windows. Скрипт запускается из Linux (Ubuntu 11.04).

            #!/usr/bin/python

            import pymssql as ms
            import MySQLdb as mdb
            import sys

            //Connection to MSSQL
            #Connection to MSSQL
            connMSSQL=ms.connect(host='192.168.8.52', user='sa', password='hostailpw321', database='hostail', as_dict=True)

            //Connection to MySQL
            #Connection to MySQL
            connMySQL=mdb.connect('localhost', 'root', 'trail123', 'trail');

            //Cursor to MSSQL
            #Cursor to MSSQL
            curMSSQL=connMSSQL.cursor()

            //Cursor to MySQL
            #Cursor to MySQL
            curMySQL=connMySQL.cursor(mdb.cursors.DictCursor)
            curMySQL.execute('SELECT * FROM clinics_mapping')

            //Get Data from MySQL 
            #Get Data from MySQL server
            for rowMySQL in curMySQL:
            #print (rowMySQL['Clinic_name'],rowMySQL['Clinic_code'])
            #curMSSQL.executemany("INSERT INTO clinics values(%s,%s)", [(rowMySQL['Clinic_name'],rowMySQL['Clinic_code'])]) 
                    names = rowMySQL['Clinic_name']
                    codes = rowMySQL['Clinic_code']
                    qryINS="INSERT INTO clinics(name,code)values('%s','%s')" %(str(names),str(codes))
                    curMSSQL.execute(qryINS)
            #print (rowMySQL['Clinic_name'],rowMySQL['Clinic_code'])
            #When I print qryINS I get a query that executes perfect in MSSQL 2008 R2 query editor      
                    print qryINS

            //Close MSSQL connection
            #Close MSSQL connection
            connMSSQL.close()

            //Close MySQL connection
            #Close MySQL connection
            connMySQL.close()

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Проблема была решена, как только я вызвал commit () следующим образом connMSSQL.commit () сразу после строки curMSSQL.execute (qryINS)

        #!/usr/bin/python

        import pymssql as ms
        import MySQLdb as mdb
        import sys

        #Connection to MSSQL
        connMSSQL=ms.connect(host='192.168.8.52', user='sa', password='hostailpw321', database='hostail', as_dict=True)

        #Connection to MySQL
        connMySQL=mdb.connect('localhost', 'root', 'trail123', 'trail');

        #Cursor to MSSQL
        curMSSQL=connMSSQL.cursor()

        #Cursor to MySQL
        curMySQL=connMySQL.cursor(mdb.cursors.DictCursor)
        curMySQL.execute('SELECT * FROM clinics_mapping')

        #Get Data from MySQL server
        for rowMySQL in curMySQL:
        #print (rowMySQL['Clinic_name'],rowMySQL['Clinic_code'])
        #curMSSQL.executemany("INSERT INTO clinics values(%s,%s)", [(rowMySQL['Clinic_name'],rowMySQL['Clinic_code'])]) 
                names = rowMySQL['Clinic_name']
                codes = rowMySQL['Clinic_code']
                qryINS="INSERT INTO clinics(name,code)values('%s','%s')" %(str(names),str(codes))
                curMSSQL.execute(qryINS)
                connMSSQL.commit()

                """
                I had not called commit() which persists your data if you had not put autocommit to True.I have called it as connMSSQL.commit() in my script.
                """

        #Close MSSQL connection
        connMSSQL.close()

        #Close MySQL connection
        connMySQL.close()
0 голосов
/ 18 октября 2011

pyodbc у меня работает.http://sourceforge.net/projects/pyodb/

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