जब आप Python कोड में MySQL डेटाबेस से कनेक्ट करना चाहते हैं, तो आप mysql-connector-python दोनों का उपयोग कर सकते हैं MySQL ड्राइवर और PyMySQL . mysql-कनेक्टर-पायथन MySQL ड्राइवर एक MySQL सर्वर बिल्ट-इन ड्राइवर है और PyMySQL एक तृतीय-पक्ष लाइब्रेरी है।
सभी दो MySQL अजगर पुस्तकालय आपको MySQL डेटाबेस कनेक्शन प्राप्त करने, सम्मिलित करने, हटाने, अद्यतन करने, SQL कमांड का चयन करने के लिए कक्षाएं प्रदान करते हैं। वे लेनदेन प्रबंधन का भी समर्थन करते हैं। यह लेख आपको mysql-connector-python . का उपयोग करने का एक उदाहरण दिखाएगा और PyMySQL MySQL डेटाबेस टेबल पर काम करने के लिए।
<एच3>1. MySQL डेटाबेस को संचालित करने के लिए mysql-connector-python का उपयोग कैसे करें।
1.1 mysql-connector-python लाइब्रेरी इंस्टॉल करें।
- द mysql-कनेक्टर-पायथन जब आप MySQL डेटाबेस स्थापित करते हैं तो पुस्तकालय स्थापित किया जा सकता है।
- तो आप कमांड चला सकते हैं
pip show mysql-connector-python
यह जाँचने के लिए कि यह स्थापित किया गया है या नहीं। - यदि mysql-connector-python पुस्तकालय स्थापित नहीं है, आप कमांड चला सकते हैं
pip install mysql-connector-python
इसे स्थापित करने के लिए।$ pip install mysql-connector-pythonmysql-connector-python का संग्रह mysql_connector_python-8.0.25-py2.py3-none-any.whl (319 kB) डाउनलोड करना |█████████ | 319 kB 219 kB/s प्रोटोबफ का संग्रह>=3.0.0 प्रोटोबफ डाउनलोड करना-3.17.0-cp37-cp37m-macosx_10_9_x86_64.whl (959 kB) |██████████████████ | 959 kB 727 kB/s आवश्यकता पहले से ही संतुष्ट:छह>=1.9 में /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (protobuf>=3.0.0->mysql-connector से) -पायथन) (1.15.0) एकत्रित पैकेज स्थापित करना:प्रोटोबफ, mysql-कनेक्टर-पायथन सफलतापूर्वक स्थापित mysql-connector-python-8.0.25 protobuf-3.17.0
- अब जब आप कमांड चलाते हैं
pip show mysql-connector-python
फिर से, आप इसकी इंस्टाल जानकारी प्राप्त कर सकते हैं। /connector-python/en/index.htmlलेखक:Oracle और/या इसके सहयोगीलेखक-ईमेल:UNKNOWNलाइसेंस:GNU GPLv2 (FOSS लाइसेंस अपवाद के साथ) स्थान:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7 /साइट-पैकेजआवश्यक:प्रोटोबफआवश्यक-द्वारा:
1.2 mysql-connector-python Connect To MySQL Database Steps का उपयोग करें।
- mysql.connector आयात करें कक्षा।
mysql.connector आयात करें
- mysql.connector.connect() को आमंत्रित करें MySQL डेटाबेस सर्वर से कनेक्ट करने की विधि। ', use_unicode=True):conn =mysql.connector.connect(user=user, password=password, host=host, port=port, database=database, use_unicode=use_unicode) return conn
1.3 तालिका बनाने के लिए DDL कथन निष्पादित करें।
- MySQL डेटाबेस कर्सर प्राप्त करें।
कर्सर =conn.cursor()
- डीडीएल स्टेटमेंट निष्पादित करें। यदि आप एक समय में कई डीडीएल स्टेटमेंट निष्पादित करना चाहते हैं, तो आपको प्रत्येक डीडीएल स्टेटमेंट को अर्धविराम से अलग करना होगा, और आपको multi=True जोड़ना चाहिए।
कर्सर ऑब्जेक्ट के लिए पैरामीटरexecute()
विधि, अन्यथा यह त्रुटि फेंक देगा mysql.connector.errors.InterfaceError:एकाधिक कथन निष्पादित करते समय बहु =सत्य का उपयोग करें .def execute_ddl(conn):कर्सर =conn.cursor() # नीचे दिया गया डीडीएल पहले टेबल को छोड़ेगा यदि मौजूद है, तो टेबल बनाएं। ddl_sql=''' ड्रॉप टेबल user_account; टेबल बनाएं `dev2qa_example`।`user_account` ( `id` INT NOT NULL AUTO_INCREMENT, `user_name` VARCHAR(45) NULL, `password` VARCHAR(45) NULL, `email` VARCHAR(45) NULL, PRIMARY KEY (`id `)); ''' # क्योंकि उपरोक्त डीडीएल में 2 स्टेटमेंट हैं (ड्रॉप, क्रिएट), इसलिए त्रुटि से बचने के लिए मल्टी =ट्रू पैरामीटर जोड़ने की जरूरत है। कर्सर.execute(ddl_sql, multi=True) कर्सर.क्लोज़ () conn.close () प्रिंट (ddl_sql + 'सफलतापूर्वक निष्पादित।')
1.4 डीएमएल निष्पादित करें (सम्मिलित करें, अपडेट करें, हटाएं) कथन।
- MySQL डेटाबेस कनेक्शन कर्सर ऑब्जेक्ट प्राप्त करें।
- कर्सर ऑब्जेक्ट के
execute()
के साथ इन्सर्ट चलाएं, अपडेट करें, SQL स्टेटमेंट को डिलीट करें विधि।def execute_dml(conn):कर्सर =conn.cursor() dml_insert =''' INSERT INTO 'dev2qa_example`।`user_account` VALUES (null, %s, %s, %s); ''' कर्सर.execute(dml_insert, ('tom', 'tom12345678', '[email protected]')) conn.commit() कर्सर.क्लोज़() conn.close()
- यदि आप MySQL तालिका में एकाधिक पंक्तियाँ सम्मिलित करना चाहते हैं, तो आप कर्सर ऑब्जेक्ट के
executemany()
को निष्पादित कर सकते हैं विधि।def execute_dml_insert_many(conn):कर्सर =conn.cursor() dml_insert =''' INSERT INTO `dev2qa_example`।`user_account` VALUES (शून्य, %s, %s, %s); ''' row_tuple =(('रिचर्ड', 'रिचर्ड', '[email protected]'), ('ट्रम्प', 'ट्रम्प', '[email protected]'), ('डॉक्टर', 'डॉक्टर' , '[email protected]')) कर्सर.executemany(dml_insert, row_tuple) conn.commit() कर्सर.क्लोज़() con.close()
1.5 DML निष्पादित करें SQL कथन चुनें।
- कर्सर ऑब्जेक्ट का
execute()
चलाएं चयन SQL कथन को चलाने के लिए विधि। कर्सर.execute(dml_select) # रो हेडर प्रिंट करें। कर्सर में कॉल के लिए। विवरण:प्रिंट (कॉल [0], अंत ='\ टी') प्रिंट ('\ n ---------------- -----') # प्रत्येक पंक्ति डेटा प्रिंट करें। कर्सर में पंक्ति के लिए:प्रिंट (पंक्ति) प्रिंट (पंक्ति [1] + '--->' + पंक्ति [2]) कर्सर। बंद करें () conn.close ()
2.1 PyMySQL इंस्टॉल करें।
- इससे पहले कि आप PyMySQL का उपयोग कर सकें, आपको पहले इसे स्थापित करना चाहिए। आप नीचे की तरह स्थापित करने के लिए पाइप का उपयोग कर सकते हैं।
$ pip3 PyMySQL स्थापित करें
- आप
pip3 show
चला सकते हैं PyMySQL इंस्टॉलेशन को सत्यापित करने के लिए कमांड।$ pip3 शो PyMySQL
2.2 MySQL डेटाबेस को जोड़ने और संचालित करने के लिए PyMySQL का उपयोग करें।
नीचे दिए गए चरण हैं कि आप Python कोड में PyMySQL लाइब्रेरी का उपयोग करते हैं।
- PyMSQL आयात करें कनेक्ट करें , कर्सर class.
pymysql से आयात कनेक्ट, कर्सर
- कॉल करें कनेक्ट करें MySQL डेटाबेस कनेक्शन ऑब्जेक्ट प्राप्त करने की विधि।
- कनेक्शन ऑब्जेक्ट के कर्सर() फ़ंक्शन द्वारा डेटाबेस कर्सर ऑब्जेक्ट प्राप्त करें।
conn.cursor() कर्सर के रूप में:
- SQL कथन निष्पादित करें कर्सर ऑब्जेक्ट का उपयोग करें।
cursor.execute(sql)
- यदि sql स्टेटमेंट एक सेलेक्ट स्टेटमेंट है, तो sql निष्पादन परिणाम प्राप्त करने के लिए कर्सर ऑब्जेक्ट की fetchall () या fetchone () विधि को कॉल करें। कृपया ध्यान दें कि fetchall() को बुलाने के बाद, कर्सर परिणाम की अंतिम पंक्ति में चला जाएगा, इसलिए यदि आप फिर से fetchall() विधि को कॉल करते हैं, तो कोई पंक्ति वापस नहीं आएगी।
row =कर्सर.fetchall()orrow =कर्सर .fetchone()
- यदि sql स्टेटमेंट एक इंसर्ट, अपडेट, डिलीट स्टेटमेंट है, तो कनेक्शन ऑब्जेक्ट के कमिट () फ़ंक्शन को प्रभावी करने के लिए MySQL डेटाबेस में परिवर्तन करने के लिए कॉल करें।
conn.commit()
- डेटाबेस संसाधनों को जारी करने के लिए अंत में MySQL डेटाबेस कनेक्शन ऑब्जेक्ट को बंद करना न भूलें।
अगर conn कोई नहीं है:conn.close() conn =none
2.3 PyMySQL MySQL डेटाबेस उदाहरण को संचालित करता है।
- इस उदाहरण में, MySQL डेटाबेस नाम dev2qa_example . है , तालिका का नाम user_account है . तालिका में चार स्तंभ हैं जो id . हैं , user_name , पासवर्ड, और ईमेल . आईडी कॉलम स्वतः बढ़ा हुआ है।
- पायथन स्रोत कोड में नीचे की तरह उपयोगकर्ता खाता डेटा डालने, अपडेट करने, हटाने और चयन करने के तरीके शामिल हैं। 'dev2qa_example'global_charset='utf8'global_cursorclass=cursors.DictCursor# mysql कनेक्शन ऑब्जेक्ट प्राप्त करें। open_mysql_connection(host='127.0.0.1', user='jerry', password='jerry', db='dev2qa_example', charset='utf8', कर्सरक्लास =कर्सर। डिक्ट कर्सर):कॉन =कनेक्ट (होस्ट =होस्ट, उपयोगकर्ता =उपयोगकर्ता, पासवर्ड =पासवर्ड, डीबी =डीबी, वर्णसेट =वर्णसेट, कर्सरक्लास =कर्सरक्लास) वापसी कॉन # बंद MySQL कनेक्शन। def close_mysql_connection(conn):यदि conn कोई नहीं है:conn.close() conn =कोई नहीं# sql कमांड को इन्सर्ट, अपडेट या डिलीट करें। 0 कॉन =कोई नहीं प्रिंट ('एसक्यूएल =' + एसक्यूएल) कोशिश करें:अगर string_is_not_empty (एसक्यूएल):conn =open_mysql_connection (होस्ट, उपयोगकर्ता, पासवर्ड, डीबी, वर्णसेट, कर्सरक्लास) conn.cursor() कर्सर के रूप में:execute_row_count =कर्सर। एक्सक्यूट (एसक्यूएल) अपवाद को छोड़कर पूर्व:प्रिंट (पूर्व) अंत में:यदि कॉन कोई नहीं है:conn.commit() close_mysql_connection (conn) वापसी execute_row_count # निष्पादित एसक्यूएल कमांड का चयन करें। def execute_select_sql (एसक्यूएल, होस्ट, उपयोगकर्ता, पासवर्ड, डीबी, वर्णसेट, कर्सरक्लास):रिट =सूची () conn =कोई नहीं प्रिंट ('एसक्यूएल =' + एसक्यूएल) कोशिश करें:अगर string_is_not_empty (एसक्यूएल):conn =open_mysql_connection (होस्ट, उपयोगकर्ता , पासवर्ड, डीबी, चारसेट, कर्सरक्लास) conn.cursor() के साथ कर्सर के रूप में:row_count =कर्सर.execute(sql) प्रिंट ('रिटर्न रो काउंट का चयन करें =' + str (row_count)) row =कर्सर.fetchall () प्रिंट ( पंक्ति) ret.append (पंक्ति) अपवाद को छोड़कर उदा:प्रिंट (पूर्व) अंत में:यदि conn कोई नहीं है:close_mysql_connection (conn) वापसी रिट # डेटाबेस तालिका dev2qa_example.user_account में उपयोगकर्ता खाता डालें। def insert_user_account(user_name, पासवर्ड, ईमेल):प्रिंट करें ('********** insert_user_account प्रारंभ करें। (ईमेल):# पहले जांचें कि उपयोगकर्ता खाता मौजूद है या नहीं। sql ="dev2qa_example.user_account से गिनती के रूप में चयन करें (आईडी) जहां निचला (user_name) ='"+user_name.lower().strip()+"'" row_list =execute_select_sql(sql, Global_host, Global_user, Global_password, Global_db, Global_charset, Global_cursorclass) account_exist =row_list में पंक्ति के लिए गलत:पंक्ति में कॉलम के लिए:मौजूद_count_number =column.get ('गिनती') अगर मौजूद_काउंट_नंबर> 0:account_exist =सही है अगर account_exist नहीं है:प्रिंट ('उपयोगकर्ता' + user_name + 'नहीं डेटाबेस में मौजूद है। डेटाबेस तालिका में उपयोगकर्ता खाता डालें।') sql ="user_account (user_name, पासवर्ड, ईमेल) मानों में डालें ('"+user_name+"','"+password+"','"+email+"') "insert_row_count =execute_insert_update_delete_sql(sql, Global_host, Global_user, Global_password, Global_db, Global_charset, Global_cursorclass) प्रिंट ('सम्मिलित करें' + str (insert_row_count) + 'पंक्ति डेटा सफलतापूर्वक।') अन्य:प्रिंट ('उपयोगकर्ता खाता मौजूद है, सम्मिलित नहीं कर सकता।') अन्य:प्रिंट ('user_name, पासवर्ड, ईमेल खाली नहीं हो सकता।') प्रिंट ('********** अंत insert_user_account.** *********') # उपयोगकर्ता खाता डेटा अपडेट करें। def update_user_account(user_name, पासवर्ड, ईमेल):प्रिंट ('********** update_user_account शुरू करें। ***********') अगर string_is_not_empty (user_name):sql ="dev2qa_example. user_account सेट पासवर्ड ='" + पासवर्ड + "', ईमेल ='" + ईमेल + "' जहां निचला (user_name) ='" + user_name.lower() + "'" update_row_count =execute_insert_update_delete_sql (एसक्यूएल, ग्लोबल_होस्ट, ग्लोबल_यूज़र, ग्लोबल_पासवर्ड , Global_db, Global_charset, Global_cursorclass) अगर update_row_count ==0:प्रिंट ('उपयोगकर्ता खाता मौजूद नहीं है, इसे अभी डालें।') insert_user_account(user_name, पासवर्ड, ईमेल) अन्य:प्रिंट ('अपडेट' + str(update_row_count) + ' पंक्ति डेटा सफलतापूर्वक।') अन्य:प्रिंट ('user_name खाली नहीं हो सकता।') प्रिंट ('********** Update_user_account समाप्त करें। ***********') # उपयोगकर्ता हटाएं डेटाबेस तालिका से खाता डेटा। def delete_user_account(user_name):प्रिंट ('********** delete_user_account शुरू करें। (user_name) ='"+user_name.lower()+"'" delete_row_count =execute_insert_update_delete_sql(sql, Global_host, Global_user, Global_password, Global_db, Global_charset, Global_cursorclass) प्रिंट ('डिलीट' + str (delete_row_count) + 'पंक्ति डेटा सफलतापूर्वक। ') प्रिंट ('********** End delete_user_account.**********') # user_name द्वारा उपयोगकर्ता खाता डेटा प्राप्त करने के लिए चयन sql कमांड निष्पादित करें। def get_user_account_by_user_name(user_name):प्रिंट ('********** get_user_account_by_user_name.**********' शुरू करें।) "+user_name.lower().strip()+"'" row_list =execute_select_sql(sql, Global_host, Global_user, Global_password, Global_db, Global_charset, Global_cursorclass) प्रिंट ('********** End get_user_account_by_user_name.* *********')# जांचें कि स्ट्रिंग खाली है या नहीं। def string_is_not_empty (str):यदि str कोई नहीं है:झूठी elif len (str.strip ()) ==0 लौटाएं:झूठी वापसी करें :रिटर्न Trueif __name__ =='__main__':# पहले यूजर अकाउंट जैरी को डिलीट करें। delete_user_account('jerry') # फिर डेटाबेस में यूजर अकाउंट जेरी डालें। insert_user_account('jerry', 'jerry', '[email protected]') # डालने की क्रिया को सत्यापित करने के लिए उपयोगकर्ता खाता डेटा दिखाएं। get_user_account_by_user_name('jerry') # usr अकाउंट की जानकारी अपडेट करें। update_user_account('jerry', 'jerry888', '[email protected]') # अपडेट की गई उपयोगकर्ता खाता जानकारी फिर से जांचें। get_user_account_by_user_name('jerry')
- नीचे उपरोक्त कोड निष्पादन परिणाम है। 'जेरी' सफलतापूर्वक 1 पंक्ति डेटा हटाएं। *********** हटाएं_उपयोगकर्ता_खाता समाप्त करें। ***** sql =dev2qa_example.user_account से गिनती के रूप में गिनती (आईडी) का चयन करें जहां निचला (user_name) ='जेरी' वापसी पंक्ति गणना =1 [{'गिनती':0}] उपयोगकर्ता जेरी डेटाबेस में मौजूद नहीं है। डेटाबेस तालिका में उपयोगकर्ता खाता सम्मिलित करें। ****सम्मिलित करें_उपयोगकर्ता_खाता समाप्त करें। (user_name) ='jerry' सेलेक्ट रिटर्न रो काउंट =1[{'id':42, 'user_name':'jerry', 'password':'jerry', 'email':'[email protected]'}] *********** अंत get_user_account_by_user_name। .user_account पासवर्ड सेट करें ='jerry888', ईमेल ='[email protected]' जहां निचला (user_name) ='jerry' 1 पंक्ति डेटा सफलतापूर्वक अपडेट करें। *********** Update_user_account समाप्त करें। **** **************** get_user_account_by_user_name शुरू करें। *********** sql =dev2qa_example.user_account से * चुनें जहां निचला (user_name) ='जेरी' वापसी पंक्ति गणना का चयन करें =1[{'id':42, 'user_name':'jerry', 'password':'jerry888', 'email' ':'[email protected]'}]********** get_user_account_by_user_name समाप्त करें।**********
संदर्भ
- मैक पर MySQL का उपयोग कैसे करें