Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं pymysql का उपयोग करके संग्रहीत प्रक्रिया के माध्यम से pyodbc mssql क्वेरी से MySQL में लौटाई गई सूची कैसे सम्मिलित कर सकता हूं?

आप लिखित रूप में अपनी संग्रहीत प्रक्रिया के साथ ऐसा नहीं कर सकते हैं। यह एक समय में केवल एक पंक्ति सम्मिलित करेगा, इसलिए सम्मिलित करने के लिए n पंक्तियों के लिए आपको इसे n कहना होगा बार।

साथ ही, जहां तक ​​मुझे पता है आप n . डालने के लिए संग्रहीत कार्यविधि को संशोधित नहीं कर सकते अस्थायी तालिका या किसी अन्य समाधान का उपयोग किए बिना पंक्तियाँ क्योंकि MySQL संग्रहीत प्रक्रियाओं के लिए तालिका-मूल्यवान मापदंडों का समर्थन नहीं करता है।

हालाँकि, यदि आप एक नियमित INSERT कथन और .executemany का उपयोग करते हैं, तो आप एक साथ कई पंक्तियाँ सम्मिलित कर सकते हैं . pymysql इन्सर्ट को एक या अधिक मल्टी-पंक्ति इंसर्ट में बंडल करेगा

mssql_crsr = mssql_cnxn.cursor()
mssql_stmt = """\
SELECT 1 AS id, N'Alfa' AS txt
UNION ALL
SELECT 2 AS id, N'Bravo' AS txt
UNION ALL
SELECT 3 AS id, N'Charlie' AS txt
"""
mssql_crsr.execute(mssql_stmt)
mssql_rows = []
while True:
    row = mssql_crsr.fetchone()
    if row:
        mssql_rows.append(tuple(row))
    else:
        break

mysql_cnxn = pymysql.connect(host='localhost', port=3307,
                             user='root', password='_whatever_',
                             db='mydb', autocommit=True)
mysql_crsr = mysql_cnxn.cursor()
mysql_stmt = "INSERT INTO stuff (id, txt) VALUES (%s, %s)"
mysql_crsr.executemany(mysql_stmt, mssql_rows)

उपरोक्त कोड MySQL General_log में निम्नलिखित उत्पन्न करता है

190430 10:00:53     4 Connect   example@sqldat.com on mydb
            4 Query INSERT INTO stuff (id, txt) VALUES (1, 'Alfa'),(2, 'Bravo'),(3, 'Charlie')
            4 Quit  

ध्यान दें कि pymysql उसी तरह से एक संग्रहीत प्रक्रिया में कॉल को बंडल नहीं कर सकता है, इसलिए यदि आप उपयोग करना चाहते हैं

mysql_stmt = "CALL stuff_one(%s, %s)"

एक नियमित INSERT के बजाय General_log में होगा

190430  9:47:10     3 Connect   example@sqldat.com on mydb
            3 Query CALL stuff_one(1, 'Alfa')
            3 Query CALL stuff_one(2, 'Bravo')
            3 Query CALL stuff_one(3, 'Charlie')
            3 Quit  



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClusterControl के साथ HAProxy मेट्रिक्स की निगरानी कैसे करें

  2. एसक्यूएल - MySQL में तालिका की कभी भी पंक्ति के माध्यम से लूपिंग?

  3. दूसरी तालिका से सही पंक्ति का चयन करने में समस्या

  4. Symfony2 (सिद्धांत) और MySQL में माइक्रोसेकंड सक्षम करना

  5. SQL संबंधित तीन तालिकाओं से डेटा का चयन