रुपेश पवार
IT Professional 5+ वर्षांचा अनुभव
प्रकाशित
10 August २०२६
वाचण्याचा वेळ
12 मिनिटे
स्तर
Beginner
Table of Contents
Python शिकायला सुरुवात केली की आधी आपण Variables, Data Types, Conditions, Loops, Functions आणि File Handling ह्या basic गोष्टी शिकतो. ह्या गोष्टी नीट समजल्या की छोटे-मोठे programs लिहिणं काय एवढं अवघड राहत नाय.
पण जेव्हा आपण एखादा real-world project बनवायला घेतो, तेव्हा एक प्रश्न आपल्या समोर उभा राहतोच —
“आपल्या application मधला एवढा सगळा data शेवटी ठेवायचा कुठं?”
आता समजा, आपण Student Management System बनवत हाय. त्यात विद्यार्थ्याचं नाव, email, mobile number, course आणि marks अशी सगळी माहिती save करायची हाय.
सुरुवातीला दोन-चार students असतील, तर Python list किंवा text file मध्ये data ठेवला तरी आपलं काम भागून जातं. पण students ची संख्या वाढत गेली, एखाद्याचा data पटकन search करायचा झाला, कुणाचे marks update करायचे असतील किंवा एखादा जुना record delete करायचा झाला, तर नुसत्या file मध्ये data ठेवणं म्हणजे उगाच कटकट करून घेणं व्हतं.
मग अशा टायमाला Database आपल्यासाठी लय उपयोगी पडतं. Database मध्ये सगळा data नीट पद्धतीनं ठेवता येतो. गरज पडली की data search, insert, update किंवा delete बी करता येतो.
म्हणजे project छोटा हाय तोवर file वगैरे वापरून काम भागतं; पण project जसा मोठा होत जातो, तसा data नीट सांभाळायला Database ची गरज पडतेच.
आता ह्या tutorial मध्ये आपण Python सोबत Database कसं वापरायचं, त्यात data कसा save करायचा आणि गरज पडली की तो insert, search, update आणि delete कसा करायचा, हे सगळं सुरुवातीपासून समजून घेणार हाव.
आणि ते बी काही अवघड पद्धतीनं नाय — सोप्या खानदेशी भाषेत, step-by-step आणि practical examples सोबत.
Database म्हणजे काय?
सोप्या भाषेत सांगायचं झालं तर Database म्हणजे data व्यवस्थित साठवण्याची आणि नंतर तो data शोधणे, बदलणे किंवा delete करणे सोपं करणारी व्यवस्था.
उदाहरणार्थ, एका school application मध्ये खालील information असू शकते:
| ID | Name | Course | Marks |
| 1 | Rahul | Python | 88 |
| 2 | Sneha | Python | 92 |
| 3 | Amit | Java | 79 |
हा data database मध्ये व्यवस्थित साठवता येतो. याचा फायदा असा की आपल्याला:
- एखादा specific student शोधता येतो
- marks update करता येतात
- नवीन student add करता येतो
- record delete करता येतो
- गरजेनुसार data filter करता येतो
Database मध्ये data manage करण्यासाठी वेगवेगळ्या database systems चा वापर केला जातो.
Relational Database (RDBMS)
Relational database मध्ये data साधारणपणे tables, rows आणि columns मध्ये साठवला जातो.
उदाहरणे:
- SQLite
- MySQL
- PostgreSQL
NoSQL Database
NoSQL databases मध्ये data नेहमी traditional rows आणि columns मध्येच ठेवला जातो असं नाही. MongoDB सारख्या database मध्ये data documents स्वरूपात ठेवला जातो.
उदाहरण:
{
“name”: “Sneha”,
“course”: “Python”,
“marks”: 92
}
यामुळे काही प्रकारच्या applications मध्ये data structure अधिक flexible ठेवता येतो.
Python मध्ये Database वापरण्यापूर्वी एक गोष्ट समजून घ्या
Python स्वतः database नाही. Python ही programming language आहे.
Database मध्ये data store करण्यासाठी आपल्याला database system आणि त्याच्याशी communicate करण्यासाठी Python library किंवा driver लागतो.
उदाहरणार्थ:
| Database | Python मधून वापरण्याचा मार्ग |
| SQLite | sqlite3 |
| MySQL | mysql-connector-python |
| MongoDB | pymongo |
SQLite साठी Python मध्ये sqlite3 module उपलब्ध असल्यामुळे सुरुवात करण्यासाठी वेगळा database server setup करण्याची गरज नसते.
SQLite म्हणजे काय?
SQLite हा lightweight relational database आहे जो एका database file मध्ये data ठेवू शकतो.
Beginner साठी SQLite समजायला सोपा आहे कारण database server वेगळा चालू ठेवण्याची गरज नसते.
आपण Python मधून: import sqlite3 इतकं करून सुरुवात करू शकतो.
SQLite शिकताना आपण database चे मुख्य concepts practical पद्धतीने समजू शकतो:
Connect → Create → Insert → Select → Update → Delete
आता हे प्रत्येक step पाहूया.
Step 1: SQLite Database तयार करणे
सर्वात आधी sqlite3 import करूया.
import sqlite3 conn = sqlite3.connect(“students.db”)
print(“Database connected successfully!”)
इथे काय होत आहे?
sqlite3.connect(“students.db”) ही line students.db नावाच्या database file शी connection तयार करते.
जर file आधीपासून अस्तित्वात नसेल, तर SQLite ती तयार करू शकते. conn मध्ये database connection ठेवला जातो.
Step 2: Cursor तयार करणे
Database ला SQL commands पाठवण्यासाठी आपण cursor वापरतो.
import sqlite3 conn = sqlite3.connect(“students.db”)
cursor = conn.cursor()
आता cursor च्या मदतीने आपण SQL query execute करू शकतो.
उदाहरण:
cursor.execute(“SELECT * FROM students”) म्हणजे database ला एक instruction दिली जात आहे
Step 3: Table तयार करणे
आता students नावाची table तयार करूया.
cursor.execute(“””
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
marks INTEGER ) “””)
conn.commit()
आपल्या table मध्ये चार columns आहेत:
- id → प्रत्येक student साठी unique ID
- name → student चे नाव
- email → student चा email
- marks → student चे marks
IF NOT EXISTS का वापरलं?
Program पुन्हा run केल्यावर table आधीच अस्तित्वात असेल तर error येऊ नये म्हणून.
PRIMARY KEY म्हणजे काय?
id प्रत्येक record ओळखण्यासाठी वापरला जातो.
AUTOINCREMENT म्हणजे काय?
नवीन student add करताना ID manually देण्याची गरज पडत नाही.
NOT NULL म्हणजे काय?
त्या column मध्ये value देणे आवश्यक आहे.
UNIQUE म्हणजे काय?
एकच email पुन्हा duplicate स्वरूपात save होऊ नये यासाठी.
commit() का वापरतो?
Database मध्ये बदल केल्यानंतर तो change save करण्यासाठी transaction commit करणे आवश्यक असू शकते.
उदाहरणार्थ:
cursor.execute(“””
INSERT INTO students (name, email, marks)
VALUES (?, ?, ?)
“””, (“Rahul”, “rahul@example.com”, 88))
conn.commit()
इथे INSERT केल्यानंतर:
conn.commit()
हा बदल database मध्ये commit करण्यासाठी वापरला आहे.
Beginner म्हणून एक साधा rule लक्षात ठेवा:
Data बदलणाऱ्या operations नंतर transaction योग्य प्रकारे commit करा.
Step 4: Database मध्ये Data Insert करणे
आता student add करूया.
cursor.execute(“””
INSERT INTO students (name, email, marks)
VALUES (?, ?, ?)
“””, (“Rahul”, “rahul@example.com”, 88))
conn.commit()
दुसरा student:
cursor.execute(“””
INSERT INTO students (name, email, marks)
VALUES (?, ?, ?)
“””, (“Sneha”, “sneha@example.com”, 92))
conn.commit()
? का वापरलं?
हा भाग खूप महत्त्वाचा आहे. असं करण्याऐवजी:
name = “Rahul”
query = f”INSERT INTO students (name) VALUES (‘{name}’)”
cursor.execute(query)
parameterized query वापरणं चांगलं:
cursor.execute(
“INSERT INTO students (name) VALUES (?)”,
(“Rahul”,)
)
इथे ? हा placeholder आहे.
User कडून आलेला data SQL query मध्ये थेट string म्हणून जोडण्यापेक्षा parameters वापरणे सुरक्षित आणि योग्य पद्धत आहे.
Step 5: Database मधून Data वाचणे
आता आपल्याला students ची माहिती पाहायची आहे.
cursor.execute(“SELECT * FROM students”)
rows = cursor.fetchall()
for row in rows:
print(row)
Output साधारण असा दिसू शकतो:
(1, ‘Rahul’, ‘rahul@example.com’, 88)
(2, ‘Sneha’, ‘sneha@example.com’, 92)
fetchall() काय करतो?
Query मधून मिळालेले सर्व rows Python मध्ये आणतो.
fetchone() आणि fetchall() मधला फरक
जर एकच record हवा असेल:
cursor. execute(
“SELECT * FROM students WHERE id = ?”,
(1,)
)
student = cursor.fetchone()
print(student)
fetchone() एक row मिळवण्यासाठी उपयोगी आहे.
तर:
rows = cursor.fetchall()
सर्व मिळालेले rows घेण्यासाठी वापरता येतो.
Specific Data शोधणे
समजा आपल्याला 90 पेक्षा जास्त marks असलेले students शोधायचे आहेत.
cursor.execute(
“SELECT * FROM students WHERE marks > ?”,
(90,)
)
students = cursor.fetchall()
for student in students:
print(student)
इथे database filtering करत आहे. यामुळे application ला आधी संपूर्ण data Python मध्ये आणून manually filter करण्याची गरज पडत नाही.
Specific Data शोधणे
समजा आपल्याला 90 पेक्षा जास्त marks असलेले students शोधायचे आहेत.
cursor.execute(
“SELECT * FROM students WHERE marks > ?”,
(90,)
)
students = cursor.fetchall()
for student in students:
print(student)
इथे database filtering करत आहे.
यामुळे application ला आधी संपूर्ण data Python मध्ये आणून manually filter करण्याची गरज पडत नाही.
Step 6: Data Update करणे
समजा Rahul चे marks 88 वरून 95 झाले.
cursor.execute(
“UPDATE students SET marks = ? WHERE name = ?”,
(95, “Rahul”)
)
conn.commit()
आता Rahul च्या record मध्ये marks update झाले आहेत. ID वापरून update करणं अनेकदा अधिक योग्य ठरू शकतं:
cursor.execute(
“UPDATE students SET marks =? WHERE id = ?”,
(95, 1)
)
conn.commit()
Step 7: Data Delete करणे
एखादा record delete करायचा असल्यास:
cursor.execute(
“DELETE FROM students WHERE id = ?”,
(1,)
)
conn.commit()
महत्त्वाचं: DELETE query वापरताना WHERE condition काळजीपूर्वक लिहा.
उदाहरणार्थ:
DELETE FROM students;
अशी query लिहिल्यास table मधील सर्व records delete होऊ शकतात.
Step 8: Database Connection बंद करणे
काम झाल्यावर connection बंद करणे चांगली practice आहे.
conn.close()
पूर्ण basic flow असा दिसतो:
import sqlite3
conn = sqlite3.connect(“students.db”)
cursor = conn.cursor()
cursor.execute(“””
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
marks INTEGER
)
“””)
cursor. execute(
“INSERT INTO students (name, email, marks) VALUES (?, ?, ?)”,
(“Amit”, “amit@example.com”, 85)
)
conn.commit()
cursor.execute(“SELECT * FROM students”)
for student in cursorfetchall():
print(student)
conn.close()
Database Errors Handle कसे करायचे?
Real project मध्ये database operation नेहमी successful होईलच असं नाही.
उदाहरणार्थ:
- duplicate email
- चुकीची query
- database file issue
- invalid input
यासाठी try-except वापरता येतो.
import sqlite3
try:
conn = sqlite3.connect(“students.db”)
cursor = conn.cursor()
cursor.execute(
“INSERT INTO students (name, email, marks) VALUES (?, ?, ?)”,
(“Amit”, “amit@example.com”, 85)
)
conn.commit()
except sqlite3.Error as error:
print(“Database error:”, error)
finally:
conn.close()
यामुळे error आल्यावर application अचानक crash होण्याऐवजी आपण तो handle करू शकतो.
SQLite मध्ये एकाच वेळी अनेक Records Insert करणे
समजा आपल्याकडे अनेक students आहेत.
students = [
(“Rahul”, “rahul@example.com”, 88),
(“Sneha”, “sneha@example.com”, 92),
(“Amit”, “amit@example.com”, 79)
]
cursor. executemany(
“INSERT INTO students (name, email, marks) VALUES (?, ?, ?)”,
students
)
conn.commit()
executemany() एकाच प्रकारची query अनेक parameter sets वर execute करण्यासाठी उपयोगी ठरते.
आता MySQL कडे वळूया
SQLite समजल्यानंतर MySQL समजणं तुलनेने सोपं जातं कारण दोन्ही relational databases आहेत. पण एक महत्त्वाचा फरक आहे:
SQLite database एका file मध्ये ठेवू शकतो, तर MySQL server-based database system आहे.
Python मधून MySQL वापरण्यासाठी mysql-connector-python सारखा driver वापरता येतो. Official MySQL documentation मध्ये connection, table creation, insertion आणि querying साठी Connector/Python examples दिले आहेत.
MySQL Connector/Python Install करणे
Terminal किंवा Command Prompt मध्ये:
pip install mysql-connector-python
यानंतर Python मध्ये:
import mysql.connector
Python मधून MySQL ला Connect करणे
import mysql.connector
conn = mysql.connector.connect(
host=”localhost”,
user=”root”,
password=”your_password”,
database=”school”
)
cursor = conn.cursor()
print(“MySQL connected successfully!”)
MySQL मध्ये connection तयार करताना host, user, password आणि database यांसारखी माहिती वापरली जाते.
MySQL मध्ये Table तयार करणे
cursor.execute(“””
CREATE TABLE IF NOT EXISTS students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(150),
marks INT
)
“””)
conn.commit()
MySQL मध्ये Data Insert करणे
query = “””
INSERT INTO students (name, email, marks)
VALUES (%s, %s, %s)
“””
values = (“Rahul”, “rahul@example.com”, 88)
cursor.execute(query, values)
conn.commit()
इथे SQLite मधील ? ऐवजी Connector/Python च्या parameterized query syntax मध्ये %s placeholder वापरला जातो.
MySQL मधून Data Read करणे
cursor.execute(“SELECT * FROM students”)
rows = cursor.fetchall()
for row in rows:
print(row)
Update:
cursor.execute(
“UPDATE students SET marks = %s WHERE id = %s”,
(95, 1)
)
conn.commit()
Delete:
cursor.execute(
“DELETE FROM students WHERE id = %s”,
(1,)
)
conn.commit()
काम झाल्यावर:
cursor.close()
conn.close()
SQLite आणि MySQL मध्ये काय फरक?
दोन्ही relational databases असले तरी त्यांचा उपयोग करण्याची परिस्थिती वेगळी असू शकते.
SQLite
- setup सोपा
- database file-based असतो
- learning आणि छोटे applications साठी सोयीचा
- वेगळा database server चालवण्याची गरज नसते
MySQL
- server-based database
- multiple applications/users साठी वापरता येतो
- web applications मध्ये मोठ्या प्रमाणावर वापरला जातो
- database server आणि credentials manage करावे लागतात
म्हणून “MySQL नेहमीच better” किंवा “SQLite फक्त beginners साठी” असा rule बनवण्यापेक्षा project ची गरज पाहून database निवडणं योग्य आहे.
MongoDB म्हणजे काय?
आतापर्यंत आपण relational database पाहिला.
आता MongoDB पाहूया.
MongoDB हा document-oriented NoSQL database आहे.
Relational database मध्ये आपण data table मध्ये ठेवतो:
students
————————–
id | name | marks
1 | Rahul | 88
MongoDB मध्ये document असा दिसू शकतो:
{
“name”: “Rahul”,
“email”: “rahul@example.com”,
“marks”: 88
}
MongoDB मध्ये Python सोबत काम करण्यासाठी PyMongo हा official Python driver आहे. त्याच्या documentation मध्ये connection, databases/collections आणि CRUD operations यासाठी स्वतंत्र sections आहेत.
PyMongo Install करणे
pip install pymongo
MongoDB ला Python सोबत Connect करणे
Local MongoDB server वापरत असल्यास:
from pymongo import MongoClient
client = MongoClient(“mongodb://localhost:27017/”)
db = client[“school”]
students = db[“students”]
इथे:
- client → MongoDB connection
- db → school database
- students → collection
MongoDB मध्ये Document Insert करणे
student = {
“name”: “Sneha”,
“email”: “sneha@example.com”,
“marks”: 92
}
students.insert_one(student)
अनेक documents एकाच वेळी:
students.insert_many([
{
“name”: “Rahul”,
“marks”: 88
},
{
“name”: “Amit”,
“marks”: 79
}
])
MongoDB मधून Data Read करणे
सर्व students:
for student in students.find():
print(student)
Specific student:
student = students.find_one({
“name”: “Sneha”
})
print(student)
Marks 80 पेक्षा जास्त:
for student in students.find({
“marks”: {“$gt”: 80}
}):
print(student)
MongoDB मध्ये Data Update करणे
students.update_one(
{“name”: “Rahul”},
{“$set”: {“marks”: 95}}
)
MongoDB मध्ये Data Delete करणे
students.delete_one({
“name”: “Rahul”
})
म्हणजे MongoDB मध्येही आपल्याला मुख्य CRUD operations करता येतात:
- Create → insert_one()
- Read → find() / find_one()
- Update → update_one()
- Delete → delete_one()
JSON म्हणजे Database आहे का?
नाही.
हा फरक beginner साठी खूप महत्त्वाचा आहे.
JSON म्हणजे data format.
Database म्हणजे data store आणि manage करण्यासाठीची system.
उदाहरणार्थ:
{
“name”: “Rahul”,
“course”: “Python”,
“marks”: 88
}
हा JSON data आहे.
Python मध्ये JSON handle करण्यासाठी built-in json module वापरता येतो.
Python Dictionary ला JSON मध्ये Convert करणे
import json
student = {
“name”: “Rahul”,
“course”: “Python”,
“marks”: 88
}
json_data = json.dumps(student)
print(json_data)
JSON String पुन्हा Python Object मध्ये आणणे
data = json.loads(json_data)
print(data[“name”])
JSON File मध्ये Data Save करणे
import json
student = {
“name”: “Rahul”,
“marks”: 88
}
with open(“student.json”, “w”) as file:
json.dump(student, file, indent=4)
आता student.json file मध्ये data save होईल.
JSON File मधून Data Read करणे
import json
with open(“student.json”, “r”) as file:
student = json.load(file)
print(student[“name”])
dump()आणि dumps()मध्ये फरक
json.dump()
Python object थेट file मध्ये JSON स्वरूपात लिहिण्यासाठी.
json.dumps()
Python object ला JSON string मध्ये convert करण्यासाठी.
तसंच:
json.load()
file मधून JSON data read करण्यासाठी.
json.loads()
JSON string Python object मध्ये convert करण्यासाठी.
JSON कधी वापरायचा आणि Database कधी?
हा practical फरक समजून घेणं जास्त महत्त्वाचं आहे. समजा application मध्ये फक्त configuration ठेवायची आहे:
{
“theme”: “dark”,
“language”: “mr”,
“notifications”: true
}
यासाठी JSON file पुरेशी असू शकते. पण हजारो users चा data ठेवायचा असेल आणि वारंवार search, update, delete करायचा असेल तर database जास्त योग्य ठरू शकतो.
SQLite vs MySQL vs MongoDB vs JSON
| पर्याय | Data कसा ठेवतो? | Setup | कुठे उपयोगी? |
| SQLite | Tables | सोपा | छोटे/local applications, learning |
| MySQL | Tables | Server setup | Web/server applications |
| MongoDB | Documents | Server/managed setup | Document-oriented applications |
| JSON | File format | अतिशय सोपा | Config, small structured data, data exchange |
ही table “कोणता database सर्वात best?” सांगण्यासाठी नाही. तुमच्या application ला काय गरज आहे त्यावर निवड अवलंबून असते.
Python Database Project: Student Management System
आता आपण शिकलेल्या SQLite concepts चा छोटा practical use पाहूया.
आपल्या application मध्ये तीन कामं असतील:
- Student add करणे
- सर्व students पाहणे
- Student चे marks update करणे
Database setup
import sqlite3
conn = sqlite3.connect(“school.db”)
cursor = conn.cursor()
cursor.execute(“””
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
marks INTEGER
)
“””)
conn.commit()
Student add करण्याचं function
def add_student(name, email, marks):
cursor.execute(
“””
INSERT INTO students (name, email, marks)
VALUES (?, ?, ?)
“””,
(name, email, marks)
)
conn.commit()
Students पाहण्यासाठी function
def get_students():
cursor.execute(“SELECT * FROM students”)
for student in cursor.fetchall():
print(student)
Marks update करण्यासाठी
def update_marks(student_id, marks):
cursor.execute(
“UPDATE students SET marks = ? WHERE id = ?”,
(marks, student_id)
)
conn.commit()
आता functions वापरू शकतो:
add_student(
“Rahul”,
“rahul@example.com”,
88
)
add_student(
“Sneha”,
“sneha@example.com”,
92
)
get_students()
update_marks(1, 95)
get_students()
conn.close()
यातून एक महत्त्वाची गोष्ट लक्षात येते: Database शिकण्याचा खरा फायदा तेव्हा होतो जेव्हा आपण त्याचा उपयोग application च्या logic सोबत करतो.
Database वापरताना या चुका टाळा
1. User input थेट SQL मध्ये जोडू नका
चुकीची पद्धत:
query = f”SELECT * FROM students WHERE name = ‘{name}'”
त्याऐवजी parameterized query वापरा:
cursor.execute(
“SELECT * FROM students WHERE name = ?”,
(name,)
)
2. Password code मध्ये hardcode करू नका
MySQL connection मध्ये:
password=”my_password”
असं production code मध्ये ठेवण्याऐवजी environment variables किंवा योग्य secrets management वापरणं चांगलं.
3. commit() विसरू नका
Insert, update किंवा delete केल्यानंतर transaction योग्य पद्धतीने commit न केल्यास अपेक्षित बदल persist न होऊ शकतो.
4. Connection कायम उघडा ठेवू नका
काम झाल्यानंतर:
conn.close()
किंवा application च्या architecture नुसार connection lifecycle व्यवस्थित manage करा.
5. DELETE आणि UPDATE काळजीपूर्वक वापरा
ही query:
DELETE FROM students;
सर्व records delete करू शकते. त्यामुळे production application मध्ये query लिहिताना WHERE condition आणि intended scope तपासा.
Database शिकताना कोणत्या गोष्टी आधी समजून घ्याव्यात?
जर तुम्ही Python database मध्ये नवीन असाल तर खालील क्रमाने शिकणं सोपं जाईल:
Step 1 SQL basics
- CREATE
- INSERT
- SELECT
- UPDATE
- DELETE
Step 2
SQLite Python मधून SQL execute करायला शिका.
Step 3
CRUD project Student किंवा Book Management System तयार करा.
Step 4
MySQL Server-based database सोबत काम करा.
Step 5
MongoDB Document-oriented database समजून घ्या.
Step 6
Web framewor यानंतर Flask किंवा Django वापरून database-connected web application तयार करा.
Frequently Asked Questions (FAQ)
Q1. Python मध्ये database वापरण्यासाठी कोणती library वापरतात?
Ans: SQLite साठी built-in sqlite3, MySQL साठी mysql-connector-python आणि MongoDB साठी pymongo हे library वापरतात.
Q2. SQLite आणि MySQL मध्ये मुख्य फरक काय आहे?
Ans: SQLite ही file-based, install न करता वापरता येणारी database आहे, तर MySQL साठी वेगळा server install करावा लागतो — मोठ्या applications साठी MySQL जास्त योग्य असते.
Q3. SQL Injection म्हणजे काय आणि तो कसा टाळायचा?
Ans: Query मध्ये user input थेट टाकल्यास होणारा सुरक्षा धोका म्हणजे SQL Injection. ? placeholder वापरून parameterized queries लिहिल्यास हा धोका टाळता येतो.
Q4. MongoDB ला relational database का म्हणत नाहीत?
Ans: MongoDB data tables ऐवजी documents (BSON format) स्वरूपात साठवते, त्यामुळे ती NoSQL / non-relational database मानली जाते.
Q5. json.dump() आणि json.dumps() मध्ये फरक काय?
Ans: json.dump() data थेट file मध्ये लिहितो, तर json.dumps() data ला JSON string मध्ये convert करतो जो नंतर वापरता येतो.
Q6. नवशिक्यांनी (beginners) कोणती database आधी शिकावी?
Ans: SQLite — कारण ती install करण्याची गरज नाही आणि Python सोबत built-in येते, त्यामुळे database concepts शिकण्यासाठी ती सर्वोत्तम सुरुवात आहे.
पुढे काय शिकाल?
Database शिकल्यानंतर पुढे Django/Flask सारखं Web Framework शिकून database सोबत खरी website किंवा API कशी बनवायची हे शिकणं उपयुक्त ठरेल.


