Какие знаешь способы загрузки данных в SQL
Python
Middle
Без компании
Какие знаешь способы загрузки данных в SQL
Ответы
В Python есть несколько способов загрузки данных в SQL-базы:
- **SQLAlchemy ORM** (рекомендуется для сложных проектов):
```
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
engine = create_engine('sqlite:///example.db')
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer)
)
metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(users.insert(), [
{'name': 'John', 'age': 30},
{'name': 'Jane', 'age': 25}
])
```
- **SQLite3 (встроенная библиотека)**:
```
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("INSERT INTO users VALUES (1, 'John', 30)")
conn.commit()
conn.close()
```
- **Pandas + SQLAlchemy** (для больших датасетов):
```
import pandas as pd
from sqlalchemy import create_engine
df = pd.DataFrame({'name': ['John', 'Jane'], 'age': [30, 25]})
engine = create_engine('sqlite:///example.db')
df.to_sql('users', engine, if_exists='append', index=False)
```
- **Psycopg2 (для PostgreSQL)**:
```
import psycopg2
conn = psycopg2.connect("dbname=test user=postgres")
cur = conn.cursor()
cur.execute("INSERT INTO users VALUES (%s, %s)", ("John", 30))
conn.commit()
```
Для оптимизации больших вставок используйте:
- Пакетную вставку (executemany)
- Транзакции (BEGIN/COMMIT)
- Временное отключение индексов