मुख्य सामग्री पर जाएं

MySQL in Python ट्यूटोरियल: शुरुआत करें

इस ट्यूटोरियल में, आप सीखेंगे कि MySQL कैसे इंस्टॉल करें, डेटाबेस कैसे बनाएँ, और टेबल्स कैसे बनाएँ, साथ ही और भी बहुत कुछ।
अपडेट किया गया 25 सित॰ 2026  · 13 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

MySQL एक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो क्लाइंट-सरवर मॉडल अपनाता है। इसका मतलब बस इतना है कि डेटा तक पहुँचना चाहने वाला कंप्यूटर ("क्लाइंट") ऐसा करने के लिए RDBMS सरवर से कनेक्ट होता है। 

दूसरी तरफ, Python एक लोकप्रिय, उच्च-स्तरीय, सामान्य-उद्देश्य प्रोग्रामिंग भाषा है। डेवलपर्स इसका उपयोग अक्सर वेबसाइट्स और सॉफ़्टवेयर बनाने, कार्यों को स्वचालित करने और डेटा का विश्लेषण करने के लिए करते हैं। इसे विभिन्न डेटाबेस के साथ भी उपयोग किया जा सकता है, जिनमें MySQL शामिल है। Python डेटा क्वेरी स्टेटमेंट्स, डेटा डेफिनिशन लैंग्वेज और डेटा मैनिपुलेशन को सपोर्ट करता है। यह ट्यूटोरियल आपको दिखाएगा कि Python में MySQL के साथ कैसे काम करें। 

Python में MySQL के साथ शुरुआत

अपने DataCamp workspace से Python में MySQL का उपयोग करने के लिए, आपको workspace integrations का उपयोग करके किसी मौजूदा होस्टेड डेटाबेस से कनेक्ट करना होगा। हम अपना डेटाबेस शून्य से बना रहे हैं, इसलिए इस ट्यूटोरियल के लिए हम DataCamp workspace का उपयोग नहीं करेंगे। 

इस ट्यूटोरियल के साथ आगे बढ़ने के लिए आपको ये दो चरण करने होंगे: 

  1. MySQL server इंस्टॉल करें ताकि डेटाबेस को प्रबंधित करने के लिए आवश्यक सेवाएँ उपलब्ध हों। आप इसे MySQL वेबसाइट से डाउनलोड और इंस्टॉल कर सकते हैं। 
  2. MySQL connector इंस्टॉल करें जो एक Python ड्राइवर है जो आपके Python एप्लिकेशन को आपके MySQL डेटाबेस से जोड़ने में मदद करता है; इसे pip (Python का पैकेज मैनेजर) से सरलता से इंस्टॉल किया जा सकता है।

एक बार जब आपने MySQL server इंस्टॉल कर लिया है: 

  1. इस GitHub repository को अपनी लोकल मशीन पर क्लोन करें – Github पर रिपोजिटरी कैसे क्लोन करें।
  2. एक वर्चुअल एनवायरनमेंट बनाएँ और सक्रिय करें – वर्चुअल एनवायरनमेंट्स का निर्माण। 
  3. टर्मिनल से pip install -r requirements का उपयोग करके आवश्यक पैकेज इंस्टॉल करें।  
  4. रूट डायरेक्टरी में एक .env फ़ाइल बनाएँ।
    1. MySQL server के साथ अपने उपयोगकर्ता को प्रमाणित करने के लिए पासवर्ड को PASSWORD नामक वेरिएबल में स्टोर करें – यदि आपने रूट पासवर्ड असाइन नहीं किया, तो सरवर पासवर्ड की आवश्यकता नहीं करेगा।  

अस्वीकरण

इस रिपोजिटरी में प्रत्येक फ़ाइल के नाम से पहले एक संख्या दी गई है जो इस ट्यूटोरियल में उसके क्रम को दर्शाती है।

उदाहरण के लिए, 04_data_insertion.py इंगित करता है कि इस मॉड्यूल को चौथे नंबर पर चलाया जाना चाहिए (मॉड्यूल 01 - 03 के बाद)। आप पूरा कोड चलाकर भी निष्पादित कर सकते हैं: 00_execute_all.py।

कनेक्शन स्थापित करना

MySQL एक सरवर-क्लाइंट मॉडल का पालन करता है; जब भी कोई क्लाइंट डेटा तक पहुँचना चाहता है, उसे RDBMS से कनेक्ट होना पड़ता है। 

सरवर के साथ कनेक्शन स्थापित करने का तरीका है mysql.connector मॉड्यूल की connect() मेथड का उपयोग करना…

import os

from mysql import connector
from dotenv import load_dotenv


load_dotenv()
PASSWORD = os.getenv("PASSWORD")

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD
    ) as database:
        print(database)
except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x00000188FA653970>
"""

connect() मेथड के तर्कों की पूरी सूची डॉक्यूमेंटेशन में देखें। 

इस कोड के बारे में तीन बातें ध्यान देने योग्य हैं: 

  1. Exception और Error हैंडलिंग: MySQL सरवर से कनेक्शन स्थापित करते समय त्रुटियों को हैंडल करना अच्छी प्रैक्टिस है। 
  2. कनेक्शन बंद करें: हमने कॉन्टेक्स्ट मैनेजर का उपयोग किया, इसलिए हमने close() मेथड का उपयोग करके कनेक्शन को स्पष्ट रूप से बंद नहीं किया। सामान्यतः, डेटाबेस तक पहुँचना समाप्त होने पर कनेक्शन बंद कर देना चाहिए ताकि अप्रत्याशित त्रुटियों से बचा जा सके। 
  3. संवेदनशील डेटा: संवेदनशील जानकारी छुपाने के लिए environment variables का उपयोग करें, क्योंकि इसे साझा करना सुरक्षा जोखिम पैदा करता है। 

अब जब आपने अपने Python प्रोग्राम और MySQL सरवर के बीच एक कनेक्शन स्थापित कर लिया है, तो आप सरवर पर उपलब्ध कई डेटाबेस में से किसी एक से कनेक्ट करने के लिए तैयार हैं। फिलहाल, हमारे पास कोई नहीं है; इसका मतलब है कि हमें सरवर के अंदर एक नया डेटाबेस बनाना होगा। अगले भाग में देखते हैं यह कैसे करें। 

नोट: जब भी डेटाबेस तक पहुँचा जाता है, सरवर के साथ एक कनेक्शन स्थापित करना आवश्यक होता है। आगे के कोड उदाहरणों में, हम ट्यूटोरियल में अनावश्यक दोहराव से बचने के लिए इसे कोड से हटा देंगे। हालांकि, यह कोडबेस में शामिल है।

Python के साथ MySQL में नया डेटाबेस बनाना

अब से, आपको SQL कौशल की आवश्यकता होगी; DataCamp का Introduction to SQL कोर्स शुरुआत करने के लिए अच्छा बिंदु है। 

MySQL में डेटाबेस बनाने का सामान्य तरीका इस प्रकार है: 

CREATE DATABASE book_ratings;

Python में यही क्वेरी चलाने के लिए, आपको cursor() ऑब्जेक्ट का एक इंस्टेंस बनाना होगा। 

cursor() ऑब्जेक्ट से, आप SQL कमांड्स को स्ट्रिंग के रूप में execute() मेथड को पास कर सकते हैं, जो कोड चलाएगा। 

आइए "book_ratings" नाम का एक डेटाबेस बनाते हैं…

create_db = "CREATE DATABASE book_ratings"
with database.cursor() as cursor:
    cursor.execute(create_db)

नोट: इस कोड को कई बार चलाने पर एक त्रुटि उठेगी जो बताएगी कि डेटाबेस पहले से मौजूद है।

आप सरवर पर मौजूद डेटाबेस इस तरह जाँच सकते हैं:

show_existing_db = "SHOW DATABASES"

with database.cursor() as cursor: 
    cursor.execute(show_existing_db)
    for db in cursor:
        print(db)

"""
('book_ratings',)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)
"""

ऊपर का कोड हमारे MySQL सरवर में वर्तमान में मौजूद सभी डेटाबेस के नाम आउटपुट करता है। एक से अधिक इसलिए हैं क्योंकि MySQL सरवर विभिन्न प्रकार के डेटाबेस मेटाडेटा और सरवर सेटिंग्स तक पहुँच देने के लिए स्वचालित रूप से कुछ डेटाबेस बनाता है।

मौजूदा डेटाबेस से कनेक्ट करना

मान लीजिए आपने पहले ही एक डेटाबेस बना लिया है, लेकिन अभी तक सरवर से कनेक्ट नहीं हुए हैं; सीधे उस डेटाबेस से कैसे कनेक्ट करेंगे? 

आसान है। 

connect() मेथड को आर्गुमेंट के रूप में डेटाबेस का नाम पास करें:

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD,
        database = "book_ratings"
    ) as database:
       
        print(database})

except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x0000016DD8C24970>
"""

टेबल बनाना

डेटाबेस में जानकारी एक टेबल में संग्रहीत होती है। टेबल महज एक स्वरूप है जिसका उपयोग संबंधित डेटा के संग्रह को कॉलम और पंक्तियों के रूप में संग्रहीत करने के लिए किया जाता है। 

किसी डेटाबेस में कई टेबल हो सकती हैं, भले ही वे एक-दूसरे से संबंधित न हों। आपके पास एक रिलेशनल डेटाबेस में केवल एक टेबल भी हो सकती है, जैसा कि हम इस भाग में प्रदर्शित करेंगे – रिलेशनल डेटाबेस पर अपना ज्ञान Introduction to Relational Databases in SQL कोर्स से बढ़ाएँ। 

टेबल बनाना अब तक आपने जो देखा है, उसी तरीके का पालन करता है; 

  • एक SQL कमांड को स्ट्रिंग के रूप में लिखें 
  • इसे कर्सर ऑब्जेक्ट की execute() मेथड को पास करें। 

इस उदाहरण में SQL स्टेटमेंट है CREATE TABLE।

आइए इसका उपयोग पुस्तकों के लिए एक टेबल बनाने में करें:

create_books_table = """
CREATE TABLE books(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    author VARCHAR(100),
    genre VARCHAR(100),
    release_year YEAR(4)
)
"""
# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(create_books_table)
    existing_database.commit()

कोड की आखिरी पंक्ति में, आप देखेंगे कि हमने अपने existing_database ऑब्जेक्ट पर commit() मेथड का उपयोग किया है। हमें यह इसलिए करना पड़ा क्योंकि MySQL Python कनेक्टर का डिफ़ॉल्ट व्यवहार किसी ट्रांज़ैक्शन को स्वचालित रूप से कमिट न करना है। 

जब भी आप किसी टेबल के डेटा में बदलाव करते हैं, आपको commit() मेथड को कॉल करना चाहिए – MySQL डॉक्स में commit() मेथड के बारे में और जानें। 

कोड में ध्यान देने योग्य कुछ और महत्वपूर्ण बातें: 

  • NOT NULL: यह संयम किसी कॉलम को NULL मान स्वीकार न करने के लिए बाध्य करता है। 
  • PRIMARY KEY: टेबल में विशिष्ट पंक्तियों की पहचान करने के लिए प्रयुक्त एक अद्वितीय मान। 
  • AUTO_INCREMENT: टेबल में डाले गए नए रेकॉर्ड्स के लिए स्वचालित रूप से एक अद्वितीय संख्या उत्पन्न करता है। 

हम DESCRIBE स्टेटमेंट का उपयोग करके यह जाँच सकते हैं कि हमारी स्कीमा सही से बनी है या नहीं, और फिर अपने कर्सर ऑब्जेक्ट पर fetchall() मेथड से सभी अवयवों को प्रिंट कर सकते हैं…

describe_books = "DESCRIBE books"
with existing_database.cursor() as cursor:
    cursor.execute(describe_books)
    books_schema = cursor.fetchall()
    for column in books_schema:
        print(column)

"""
('id', b'int', 'NO', 'PRI', None, 'auto_increment')
('title', b'varchar(100)', 'YES', '', None, '')
('author', b'varchar(100)', 'YES', '', None, '')
('genre', b'varchar(100)', 'YES', '', None, '')
('release_year', b'year', 'YES', '', None, '')
"""

डेटा प्रविष्टि

पिछले भागों में, हमने अपने book_ratings डेटाबेस में books नाम की एक टेबल बनाई। फिलहाल, यह टेबल खाली है। अगला भाग किसी टेबल को भरने के दो तरीकों को कवर करेगा जो आपके पास उपलब्ध हैं। 

एकल रेकॉर्ड डालना

ऐसा भी हो सकता है कि आपको किसी टेबल में एक ही रेकॉर्ड डालना पड़े। यद्यपि वास्तविक दुनिया में यह दुर्लभ है, फिर भी आप इसे इस प्रकार कर सकते हैं:

# INSERT SINGLE RECORD
insert_single_record = "INSERT INTO books (id, title, author, genre, release_year)\
    VALUES (%s, %s, %s, %s, %s)"
single_record = (
    "1", "Choose Yourself! Be Happy, Make Millions, Live the Dream", "James Altucher", "self-help", "2013"
    )

# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(insert_single_record, single_record)
    existing_database.commit()

एकाधिक रेकॉर्ड डालना

अधिक सामान्य तरीका जिससे आप टेबल में डेटा डालेंगे, वह है कर्सर ऑब्जेक्ट की executemany(operation_to_perform, seq_of_params) मेथड; यह आपको एक साथ कई रेकॉर्ड डालने देता है। 

जिस ऑपरेशन को हम करना चाहते हैं उसकी संरचना वही रहती है; हम केवल पैरामीटर्स के अनुक्रम को अपडेट करते हैं। 

कोड में यह इस प्रकार दिखता है: 

multiple_records = [
    (
        "2",
        "Skip the Line: The 10,000 Experiments Rule and Other Surprising Advice for Reaching Your Goals",
        "James Altucher",
        "self-help",
        "2021"        
    ),
    (
        "3",
        "The Power of No: Because One Little Word Can Bring Health, Abundance, and Happiness",
        "James Altucher",
        "self-help",
        "2014"
    ),
    ]

with existing_database.cursor() as cursor:
    cursor.executemany(insert_multiple_records, multiple_records)
    existing_database.commit()

डेटा चुनना 

SELECT स्टेटमेंट का उपयोग किसी डेटाबेस में एक या अधिक टेबल से चुनी गई पंक्तियों को पुनः प्राप्त करने के लिए किया जाता है। हम SELECT को दो तरीकों में से किसी एक से उपयोग कर सकते हैं: 

  1. किसी टेबल से विशिष्ट कॉलम चुनें।
select_specific_cols = "SELECT author, release_year FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_specific_cols)
  1. सभी कॉलम लौटाने के लिए तारे “*” का उपयोग करें
# Create cursor object
select_all_cols = "SELECT * FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_all_cols)

डेटा को सॉर्ट और फ़िल्टर करना 

डेटा को सॉर्ट और फ़िल्टर करने से आप विशिष्ट मानदंड देकर वही परिणाम वापस ला सकते हैं जिनकी आपको परवाह है। 

यहाँ कुछ उदाहरण हैं: 

WHERE

WHERE स्टेटमेंट आपको किसी निर्दिष्ट शर्त के आधार पर डेटा फ़िल्टर करने देता है। 

उदाहरण के लिए, मान लें कि हम 2010 से पहले और 2010 सहित प्रकाशित किसी भी पुस्तक के लेखक का नाम और पुस्तक का शीर्षक निकालना चाहते हैं: 

condition = "SELECT author, title FROM books WHERE release_year <= 2010"
with existing_database.cursor() as cursor:
    cursor.execute(condition)

ORDER BY

हम ORDER BY स्टेटमेंट का उपयोग परिणामों को आरोही (ASC) या अवरोही (DESC) क्रम में सॉर्ट करने के लिए भी कर सकते हैं। ध्यान दें कि जब तक आप स्पष्ट रूप से अन्यथा न बताएं, डिफ़ॉल्ट मोड हमेशा आरोही क्रम होता है। 

यहाँ हम अपने डेटा को रिलीज़ वर्ष के अनुसार अवरोही क्रम में कैसे सॉर्ट करेंगे:

order_by_year = "SELECT * FROM books ORDER BY release_year DESC"
with existing_database.cursor() as cursor:
    cursor.execute(order_by_year)

LIMIT

LIMIT स्टेटमेंट आपको परिणाम सेट में लौटाए जाने वाले रेकॉर्ड्स की संख्या निर्दिष्ट करने देता है।

# Create cursor object
define_limit = "SELECT * FROM books LIMIT 3"
with existing_database.cursor() as cursor:
    cursor.execute(define_limit)

ऊपर का कोड लौटाए जाने वाले रेकॉर्ड्स की संख्या को तीन तक सीमित करता है। 

डेटा अपडेट और डिलीट करना

ऐसे समय आएँगे जब डेटा बदल जाएगा, अब उपयोगी नहीं रहेगा, या गलत होगा। इस भाग में, आप सीखेंगे कि अपडेट और डिलीशन के साथ इन स्थितियों को कैसे प्रबंधित करें। 

UPDATE

UPDATE क्वेरी आपको किसी टेबल की मौजूदा मानों को उसकी संरचना को प्रभावित किए बिना बदलने देती है। 

उदाहरण के लिए, यदि किसी ने अपना नाम बदल दिया है तो आपको रेकॉर्ड अपडेट करना पड़ सकता है; कोड में यह इस प्रकार दिखेगा:

update_query = """
UPDATE
    books
SET
    author = "Big J"
WHERE
    author = "James Altucher"
"""
with existing_database.cursor() as cursor:
    cursor.execute(update_query)
    existing_database.commit()

DELETE

DELETE क्वेरी आपको किसी टेबल से रेकॉर्ड हटाने देती है:

drop_record = "DELETE FROM books WHERE release_year <= 2000"
with existing_database.cursor() as cursor:
    cursor.execute(drop_record)
    existing_database.commit()

इस कोड में, हमने उन सभी रेकॉर्ड्स को हटा दिया जिनका रिलीज़ वर्ष 2000 से कम या बराबर था। 

DROP TABLE

DROP TABLE स्टेटमेंट आपको किसी डेटाबेस से किसी टेबल को स्थायी रूप से हटाने देता है। IF EXISTS जोड़ने से आप उन स्थितियों का ध्यान रख सकते हैं जहाँ आपको यकीन नहीं है कि जिसे आप हटाना चाहते हैं वह टेबल मौजूद है या नहीं, लेकिन यह पूरी तरह वैकल्पिक है। 

आइए अपने book_ratings डेटाबेस में बनाई गई टेबल को ड्रॉप करें: 

drop_table = "DROP TABLE IF EXISTS books"
with existing_database.cursor() as cursor:
    cursor.execute(drop_table)
    existing_database.commit()

निष्कर्ष

इस ट्यूटोरियल में, आपने सीखा कि Python में MySQL सरवर के साथ कनेक्शन कैसे स्थापित करें, नया डेटाबेस बनाएँ, मौजूदा डेटाबेस से कनेक्ट करें, एक टेबल बनाएँ, और Python से MySQL टेबल पर विभिन्न क्वेरी ऑपरेशंस करें।  

अपनी सीख जारी रखने के लिए निम्न संसाधन देखें:

विषय
SQL
डेटा साइंस
Python

SQL कोर्स

कोर्स

इंटरमीडिएट Python

4 घंटा
1.4M
Matplotlib से विज़ुअलाइज़ेशन बनाकर और pandas से DataFrames को संभालकर अपने डेटा विज्ञान कौशल बढ़ाएँ।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

कोर्स

SQL में Data Manipulation

4 घंटा
336.7K
जटिल SQL क्वेरियों में महारत हासिल करें, डेटा विज्ञान के विविध प्रश्नों के उत्तर दें और PostgreSQL में विश्लेषण के लिए मजबूत डेटा सेट तैयार करें।
और देखेंRight Arrow