среда, 14 февраля 2018 г.

Установка драйвера базы данных MySQL для Python

-------------------------------------------------------------------------------------------------------
ubuntu 16.04

$ sudo apt update
$ sudo apt upgrade 
$ sudo apt install python3-mysql.connector
 
$ sudo apt install mariadb-server -y
---------------------------------------------------------------- 
для 17.10:
$ sudo systemctl restart mariadb
-----------------------------------------------------------------
$ sudo mysql -u root -p
(Можно задать пароль)
Создать базу: 
MariaDB [(none)]> create database exmo;
Задать учетную запись u для базы exmo с паролем 
MariaDB [(none)]> grant all on exmo.* to 'u' identified by 'secret'; 
MariaDB [(none)]> quit
 
{'trade_id': 49165408, 'type': 'sell', 'amount': '33.9810928', 'quantity': '0.00364604', 'date': 1518623170, 'price': '9320'}

$ mysql -u u -p exmo

MariaDB [exmo]> create table trade ( 
id int auto_increment primary key,
ts timestamp default current_timestamp,
trade_id int not null,
type varchar(4) not null,
amount decimal(30,8) not null,
quantity decimal(30,8) not null,
date int not null,
price decimal(30,8) not null );
 
MariaDB [exmo]> CREATE UNIQUE INDEX trade_id ON trade(trade_id);
MariaDB [exmo]> CREATE INDEX date ON trade(date);
MariaDB [exmo]> CREATE INDEX price ON trade(price); 
число строк: 
MariaDB [exmo]> SELECT COUNT(1) FROM trade;
 
MariaDB [exmo]> SELECT COUNT(1) FROM trade;
+----------+
| COUNT(1) |
+----------+
|    10403 |
+----------+ 
 
MariaDB [exmo]> describe trade;
+----------+---------------+------+-----+-------------------+----------------+
| Field    | Type          | Null | Key | Default           | Extra          |
+----------+---------------+------+-----+-------------------+----------------+
| id       | int(11)       | NO   | PRI | NULL              | auto_increment |
| ts       | timestamp     | NO   |     | CURRENT_TIMESTAMP |                |
| trade_id | int(11)       | NO   | UNI | NULL              |                |
| type     | varchar(4)    | NO   |     | NULL              |                |
| amount   | decimal(30,8) | NO   |     | NULL              |                |
| quantity | decimal(30,8) | NO   |     | NULL              |                |
| date     | int(11)       | NO   | MUL | NULL              |                |
| price    | decimal(30,8) | NO   | MUL | NULL              |                |
+----------+---------------+------+-----+-------------------+----------------+
 
 
MariaDB [exmo]> DROP TABLE trade;

MariaDB [exmo]> SHOW TABLES IN exmo;
+----------------+
| Tables_in_exmo |
+----------------+
| trade          |
+----------------+ 
 
Check ALL Database Size in MySQL: 
 
$ mysql -u u -p exmo
MariaDB [exmo]> SELECT table_schema "Database Name", SUM(data_length+index_length)/1024/1024
"Database Size (MB)"  FROM information_schema.TABLES GROUP BY table_schema;
+--------------------+--------------------+
| Database Name      | Database Size (MB) |
+--------------------+--------------------+
| exmo               |        97.10937500 |
| information_schema |         0.07812500 |
+--------------------+--------------------+

 
 
 
$ python3
>>> import mysql.connector
>>> db = mysql.connector.connect(host="localhost", user="u", passwd="secret", db="exmo")
>>> cur = db.cursor()
>>> cur.execute("select * from trade")
>>> for row in cur.fetchall(): print(row[0])
>>> db.close()
Изучение MySQL / MariaDB для начинающих
Индексы в MySQL
как правильно реализовать вставку записи если она не существует
ImportError: No module named 'MySQL'
How to Connect to MySQL Database from Python With Example
Group OHLC-Stockmarket Data into multiple timeframes - Mysql
How to connect Python programs to MariaDB
MySQL Connector/Python Developer Guide

Настройка удаленного подключения к mysql
Самоучитель Python
$

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
Это означает, что mysql слушает только локальные соединения и игнорирует внешние подключения.
Разрешим внешние подключения.
---------------------------------------------------------------------------------------------
для mysql:
 Для этого отредактируем /etc/mysql/my.cnf, закомментировав две строки:
$ sudo nano /etc/mysql/my.cnf
---------------------------------------------------------------------------------------
Для MariaDB:
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
#bind-address           = 127.0.0.1
bind-address           = 0.0.0.0
$ sudo systemctl restart mysql
$ netstat -an | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:* 
 
$ sudo mysql -u root -p
MariaDB [(none)]> UPDATE mysql.user SET authentication_string = PASSWORD("secret"), plugin = "mysql_native_password" WHERE User = "u"; 

-----------------------------------------------------------------------------------
$ sudo ufw allow from 10.8.1.0/24 proto tcp to any port 3306
$ sudo ufw reload
$ sudo ufw status

Group OHLC-Stockmarket Data into multiple timeframes - Mysql
Overlap Studies Functions

Комментариев нет:

Отправить комментарий