%load_ext sql
import sqlalchemy
engine = sqlalchemy.create_engine('mysql://user:pass@localhost:3306/stepik')
%sql mysql://user:pass@localhost:3306/stepik
'Connected: user@stepik'
%%sql
SELECT version();
* mysql://user:***@localhost:3306/stepik 1 rows affected.
version() |
---|
8.0.27 |
%%sql
CREATE DATABASE IF NOT EXISTS stepik;
%%sql
SHOW DATABASES;
* mysql://user:***@localhost:3306/stepik 7 rows affected.
Database |
---|
information_schema |
mysql |
performance_schema |
sakila |
stepik |
sys |
world |
sqlalchemy.create_engine('mysql://user:pass@localhost:3306/stepik')
%sql mysql://user:pass@localhost:3306/stepik
%%sql
CREATE TABLE IF NOT EXISTS book (
book_id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(50),
author VARCHAR(30),
price DECIMAL(8, 2), #
amount INT
);
# DECIMAL(8, 2)
# Десятичное число с 8 цифрами с обеих сторон от запятой и 2 цифрами после неё
* mysql://user:***@localhost:3306/stepik 0 rows affected. 0 rows affected.
[]
%%sql
CREATE TABLE IF NOT EXISTS genre(
genre_id INT PRIMARY KEY AUTO_INCREMENT,
name_genre VARCHAR(30)
);
* mysql://user:***@localhost:3306/stepik 0 rows affected.
[]
%%sql
INSERT book (title, author, price, amount)
VALUES ('TEST2', 'authDr', 143.535, 4);
%%sql
INSERT genre (name_genre)
VALUES ('Роман');
Количество полей должно совпадать.
Код ниже выдаст ошибку:
%%sql
INSERT book (title, author, price, amount)
VALUES ('TEST2', 'authDr', 143.535);
%%sql
INSERT book (title, author, price)
VALUES ('TEST2', 'authDr', 143.535, 4);
* mysql://user:***@localhost:3306/stepik (MySQLdb._exceptions.OperationalError) (1136, "Column count doesn't match value count at row 1") [SQL: INSERT book (title, author, price, amount) VALUES ('TEST2', 'authDr', 143.535);] (Background on this error at: https://sqlalche.me/e/14/e3q8)
%%sql
SELECT * FROM book
* mysql://user:***@localhost:3306/stepik 5 rows affected.
book_id | title | author | price | amount |
---|---|---|---|---|
1 | Мастер и Маргарита | Булгаков М.А. | 670.99 | 3 |
2 | Белая гвардия | Булгаков М.А. | 540.50 | 5 |
3 | Идиот | Достоевский Ф.М. | 460.00 | 10 |
4 | Братья Карамазовы | Достоевский Ф.М. | 799.01 | 2 |
5 | Стихотворения и поэмы | Есенин С.А. | 650.00 | 15 |
%%sql
SELECT * FROM genre
%%sql
INSERT book (title, author, price, amount)
VALUES ('Мастер и Маргарита', 'Булгаков М.А.', 670.99, 3);
SELECT * FROM book
%%sql
INSERT INTO book (title, author, price, amount)
VALUES ('Белая гвардия', 'Булгаков М.А.', 540.50, 5),
('Идиот', 'Достоевский Ф.М.', 460.00, 10),
('Братья Карамазовы', 'Достоевский Ф.М.', 799.01, 2);
SELECT * FROM book
* mysql://user:***@localhost:3306/stepik 3 rows affected. 12 rows affected.
book_id | title | author | price | amount |
---|---|---|---|---|
1 | TEST | authr | 143.50 | 2 |
2 | TEST2 | authDr | 143.53 | 4 |
3 | TEST2 | authDr | 143.54 | 4 |
4 | TEST2 | authDr | 143.54 | 4 |
5 | Мастер и Маргарита | Булгаков М.А. | 670.99 | 3 |
6 | Белая гвардия | Булгаков М.А. | 540.50 | 5 |
7 | Белая гвардия | Булгаков М.А. | 540.50 | 5 |
8 | Идиот | Достоевский Ф.М. | 460.00 | 10 |
9 | Братья Карамазовы | Достоевский Ф.М. | 799.01 | 2 |
10 | Белая гвардия | Булгаков М.А. | 540.50 | 5 |
11 | Идиот | Достоевский Ф.М. | 460.00 | 10 |
12 | Братья Карамазовы | Достоевский Ф.М. | 799.01 | 2 |
%%sql
DELETE b1
FROM book AS b1,
book AS b2
WHERE b1.book_id > b2.book_id
AND b1.title = b2.title;
SELECT * FROM book
* mysql://user:***@localhost:3306/stepik 0 rows affected. 6 rows affected.
book_id | title | author | price | amount |
---|---|---|---|---|
1 | TEST | authr | 143.50 | 2 |
2 | TEST2 | authDr | 143.53 | 4 |
5 | Мастер и Маргарита | Булгаков М.А. | 670.99 | 3 |
6 | Белая гвардия | Булгаков М.А. | 540.50 | 5 |
8 | Идиот | Достоевский Ф.М. | 460.00 | 10 |
9 | Братья Карамазовы | Достоевский Ф.М. | 799.01 | 2 |