SQLite juda yaxshi ma'lumotlar bazasi, lekin u ba'zi cheklovlarga ega. Katta loyihalar uchun boshqa DBMS larni ishlatish kerak bo'lishi mumkin.
# SQLite cheklovlari
# 1. Concurrent writes - Bir vaqtda faqat bitta yozish
# 2. Network access yo'q - Tarmoq orqali ulanish yo'q
# 3. User management yo'q - Foydalanuvchi boshqaruvi yo'q
# 4. Stored procedures yo'q - Saqlangan protseduralar yo'q
# 5. Advanced features cheklangan - Ba'zi ilg'or funksiyalar yo'q
# SQLite limits
# 1. Fayl hajmi: 281 TB (praktikada 1-2 TB)
# 2. Jadval hajmi: 281 TB
# 3. Qator hajmi: 1 GB
# 4. Ustun soni: 2000
# 5. Index soni: 32767
# 6. Trigger soni: 32767
# SQLite dan boshqa DBMS ga o'tish kerak bo'lganda:
# 1. Ko'p foydalanuvchi (1000+)
# 2. Katta hajmdagi ma'lumotlar (100GB+)
# 3. Network orqali ulanish kerak
# 4. Murakkab ruxsatlar kerak
# 5. Real-time collaboration kerak
# 6. High availability kerak
# 7. Advanced features kerak
# Misollar:
# - E-commerce sayt (1000+ foydalanuvchi)
# - Social media platform
# - Enterprise application
# - Multi-tenant SaaS
# - Real-time analytics
# SQLite dan MySQL ga o'tish
# 1. Ma'lumotlarni eksport qilish
sqlite3 mydatabase.db .dump > backup.sql
# 2. MySQL da jadvallar yaratish
mysql -u root -p
CREATE DATABASE mydatabase;
USE mydatabase;
# 3. SQL fayldan import qilish
mysql -u root -p mydatabase < backup.sql
# 4. Python kodini o'zgartirish
# SQLite:
import sqlite3
conn = sqlite3.connect('mydatabase.db')
# MySQL:
import mysql.connector
conn = mysql.connector.connect(
host='localhost',
user='root',
password='password',
database='mydatabase'
)
# E-commerce tizimi
# SQLite da (kichik loyiha)
sqlite3 ecommerce.db
# Jadvallar
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
phone TEXT,
registration_date DATE DEFAULT CURRENT_DATE
);
CREATE TABLE products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL,
stock_quantity INTEGER DEFAULT 0,
category TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
customer_id INTEGER,
order_date DATE DEFAULT CURRENT_DATE,
total_amount REAL,
status TEXT DEFAULT 'pending',
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
# Ma'lumotlar qo'shish
INSERT INTO customers (name, email, phone) VALUES
('Ali Valiyev', '[email protected]', '+998901234567'),
('Malika Karimova', '[email protected]', '+998901234568'),
('Bobur Toshmatov', '[email protected]', '+998901234569');
INSERT INTO products (name, price, stock_quantity, category) VALUES
('Laptop', 1000.00, 10, 'Electronics'),
('Phone', 500.00, 25, 'Electronics'),
('Book', 20.00, 100, 'Education'),
('T-shirt', 30.00, 50, 'Clothing');
INSERT INTO orders (customer_id, total_amount, status) VALUES
(1, 150.00, 'completed'),
(2, 200.00, 'completed'),
(1, 100.00, 'pending'),
(3, 300.00, 'completed');
# Backup yaratish
.quit
sqlite3 ecommerce.db .dump > ecommerce_backup.sql
# MySQL da jadvallar yaratish
CREATE DATABASE ecommerce;
USE ecommerce;
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
registration_date DATE DEFAULT (CURRENT_DATE)
);
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(200) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock_quantity INT DEFAULT 0,
category VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
order_date DATE DEFAULT (CURRENT_DATE),
total_amount DECIMAL(10,2),
status VARCHAR(20) DEFAULT 'pending',
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
# Ma'lumotlarni import qilish
# SQLite backup faylini MySQL formatiga o'zgartirish kerak
# Yoki Python script yozish
# Python migration script
import sqlite3
import mysql.connector
def migrate_sqlite_to_mysql():
"""SQLite dan MySQL ga ma'lumotlarni ko'chirish"""
# SQLite dan ma'lumotlarni olish
sqlite_conn = sqlite3.connect('ecommerce.db')
sqlite_cursor = sqlite_conn.cursor()
# MySQL ga ulanish
mysql_conn = mysql.connector.connect(
host='localhost',
user='root',
password='password',
database='ecommerce'
)
mysql_cursor = mysql_conn.cursor()
# Customers ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM customers")
customers = sqlite_cursor.fetchall()
for customer in customers:
mysql_cursor.execute("""
INSERT INTO customers (id, name, email, phone, registration_date)
VALUES (%s, %s, %s, %s, %s)
""", customer)
# Products ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM products")
products = sqlite_cursor.fetchall()
for product in products:
mysql_cursor.execute("""
INSERT INTO products (id, name, price, stock_quantity, category, created_at)
VALUES (%s, %s, %s, %s, %s, %s)
""", product)
# Orders ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM orders")
orders = sqlite_cursor.fetchall()
for order in orders:
mysql_cursor.execute("""
INSERT INTO orders (id, customer_id, order_date, total_amount, status)
VALUES (%s, %s, %s, %s, %s)
""", order)
# O'zgarishlarni saqlash
mysql_conn.commit()
# Ulanishlarni yopish
sqlite_conn.close()
mysql_conn.close()
print("Migration tugallandi!")
# Migration ishga tushirish
migrate_sqlite_to_mysql()
# PostgreSQL da jadvallar yaratish
CREATE DATABASE ecommerce;
\c ecommerce;
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE
);
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock_quantity INTEGER DEFAULT 0,
category VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER,
order_date DATE DEFAULT CURRENT_DATE,
total_amount DECIMAL(10,2),
status VARCHAR(20) DEFAULT 'pending',
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
# Python migration script
import sqlite3
import psycopg2
def migrate_sqlite_to_postgresql():
"""SQLite dan PostgreSQL ga ma'lumotlarni ko'chirish"""
# SQLite dan ma'lumotlarni olish
sqlite_conn = sqlite3.connect('ecommerce.db')
sqlite_cursor = sqlite_conn.cursor()
# PostgreSQL ga ulanish
postgres_conn = psycopg2.connect(
host='localhost',
user='postgres',
password='password',
database='ecommerce'
)
postgres_cursor = postgres_conn.cursor()
# Customers ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM customers")
customers = sqlite_cursor.fetchall()
for customer in customers:
postgres_cursor.execute("""
INSERT INTO customers (id, name, email, phone, registration_date)
VALUES (%s, %s, %s, %s, %s)
""", customer)
# Products ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM products")
products = sqlite_cursor.fetchall()
for product in products:
postgres_cursor.execute("""
INSERT INTO products (id, name, price, stock_quantity, category, created_at)
VALUES (%s, %s, %s, %s, %s, %s)
""", product)
# Orders ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM orders")
orders = sqlite_cursor.fetchall()
for order in orders:
postgres_cursor.execute("""
INSERT INTO orders (id, customer_id, order_date, total_amount, status)
VALUES (%s, %s, %s, %s, %s)
""", order)
# O'zgarishlarni saqlash
postgres_conn.commit()
# Ulanishlarni yopish
sqlite_conn.close()
postgres_conn.close()
print("Migration tugallandi!")
# Migration ishga tushirish
migrate_sqlite_to_postgresql()
# MongoDB da ma'lumotlarni saqlash
# SQLite dan MongoDB ga o'tish
# Python migration script
import sqlite3
from pymongo import MongoClient
def migrate_sqlite_to_mongodb():
"""SQLite dan MongoDB ga ma'lumotlarni ko'chirish"""
# SQLite dan ma'lumotlarni olish
sqlite_conn = sqlite3.connect('ecommerce.db')
sqlite_cursor = sqlite_conn.cursor()
# MongoDB ga ulanish
mongo_client = MongoClient('mongodb://localhost:27017/')
db = mongo_client['ecommerce']
# Customers ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM customers")
customers = sqlite_cursor.fetchall()
customers_collection = db['customers']
for customer in customers:
customer_doc = {
'id': customer[0],
'name': customer[1],
'email': customer[2],
'phone': customer[3],
'registration_date': customer[4]
}
customers_collection.insert_one(customer_doc)
# Products ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM products")
products = sqlite_cursor.fetchall()
products_collection = db['products']
for product in products:
product_doc = {
'id': product[0],
'name': product[1],
'price': product[2],
'stock_quantity': product[3],
'category': product[4],
'created_at': product[5]
}
products_collection.insert_one(product_doc)
# Orders ma'lumotlarini ko'chirish
sqlite_cursor.execute("SELECT * FROM orders")
orders = sqlite_cursor.fetchall()
orders_collection = db['orders']
for order in orders:
order_doc = {
'id': order[0],
'customer_id': order[1],
'order_date': order[2],
'total_amount': order[3],
'status': order[4]
}
orders_collection.insert_one(order_doc)
# Ulanishlarni yopish
sqlite_conn.close()
mongo_client.close()
print("Migration tugallandi!")
# Migration ishga tushirish
migrate_sqlite_to_mongodb()