Synology NAS DS218을 사용하여 mysql을 사용해보기

16959 단어 MySQLDS218jmariadb

mysql을 사용해보기



synology nas가 집에 있기 때문에 SQL 서버라는 것을 세우고 싶기 때문에 시도했습니다.

sql 서버 사용



Diskstation에서 사용할 수있는 응용 프로그램에 MYSQL의 MARIA DB가 있었으므로 설치
그런 다음 PhyMyAdmin을 설치하여 GUI에서 데이터베이스를 설정할 수 있습니다.

사용자 등록



PhyMyAdmin에 루트로 로그인한 후 사용자 계정 및 데이터베이스 만들기



사용자 계정을 등록하여 모든 권한을 활성화
루트 계정 권한을 사용하지 않도록 설정합니다.

데이터베이스 작성



등록한 사용자 계정으로 다시 로그인한 후 데이터베이스를 만듭니다.



테이블 만들기



데이터베이스를 작성하면, 좌단의 데이터베이스 리스트에 등록한 데이터베이스가 존재하고 있을 것이므로, 리스트를 열어 보면 「신규 작성」이라고 하는 항목이 있다. 그것을 클릭하면 테이블 작성 메뉴가 된다.
이 메뉴에서 원하는 테이블 등록


mysql로 ​​테이블을 성공적으로 작성한 후 클라이언트 PC에서 서버의 데이터베이스에 액세스 해보십시오.
mysql -u user_id -p -h server_addr -P port_num
Enter password:*******
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| mydatabase         |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
mysql> use mydatabase;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-------------------+
| Tables_in_finance |
+-------------------+
| date              |
+-------------------+
1 row in set (0.01 sec)

mysql> 

이 방법으로 데이터베이스에 액세스할 수 있습니다.

테이블 만들기



sql 서버에 액세스하고 데이터베이스를 확인할 수 있었으므로 테이블을 만들려고합니다.
mysql > use mydatabase
mysql > create table sample_data (
    -> id int auto_increment not null primary key,
    -> str char(8) not null,
    -> date timestamp not null);
mysql > show tables;
+-------------------+
| Tables_in_finance |
+-------------------+
| date              |
| sample_data       |
+-------------------+

mysql > describe sample_data;
+-------+-----------+------+-----+---------------------+-------------------------------+
| Field | Type      | Null | Key | Default             | Extra                         |
+-------+-----------+------+-----+---------------------+-------------------------------+
| id    | int(11)   | NO   | PRI | NULL                | auto_increment                |
| str   | char(8)   | NO   |     | NULL                |                               |
| date  | timestamp | NO   |     | current_timestamp() | on update current_timestamp() |
+-------+-----------+------+-----+---------------------+-------------------------------+
3 rows in set (0.00 sec)

이 방법으로 테이블 데이터를 만들고 확인할 수 있습니다.

데이터 추가



데이터를 추가하려면 INSERT 사용
htps : //에서 v. mysql. 이 m/도 c/레 f만/5.6/그럼/인세 rt. HTML
구문은INSERT INTO table名 (列1,列2,列3,...) VALUES (値1,値2,値3,...)되어 있다.
mysql> INSERT INTO sample_data (str,date) VALUES ("お菓子",NOW());
Query OK, 1 row affected (0.86 sec)

mysql> INSERT INTO sample_data (str,date) VALUES ("ご飯",NOW());
Query OK, 1 row affected (0.25 sec)
idauto_increment 설정이므로 열 지정에서는 생략했습니다.NOW()는 타임 스탬프 유형의 데이터로 현재 시간을 얻는 함수

데이터 가져오기



방금 등록한 데이터를 보려면 SELECT htps : // v. mysql. 이 m/도 c/레 f만/5.6/그럼/세ぇct. HTML
구문은SELECT 取得するカラム FROM テーブル名그 밖에도 WHERE로 취해 오거나 여러가지 방법이 있으므로, 매뉴얼 참조
SELECT * FROM sample_data;
+----+-----------+---------------------+
| id | str       | date                |
+----+-----------+---------------------+
|  1 | お菓子    | 2020-04-16 10:55:25 |
|  2 | ご飯      | 2020-04-16 10:55:47 |
+----+-----------+-------


파이썬에서 액세스



파이썬에서 데이터베이스에 액세스 할 수있는 것이 더 편리하므로 방법을 설명합니다.
파이썬에서는 mysql 액세스하는 라이브러리 pymysql를 사용한다.

login


import pymysql.cursors

def main():
    # my sqlに接続する
    connection = pymysql.connect(
        user='user_id',
        passwd='password',#適宜自分で設定したパスワードに書き換えてください。
        host='server_addr',#接続先DBのホスト名或いはIPに書き換えてください。
        port = port_num,
        db='mydatabase',
        charset='utf8mb4',
        cursorclass=pymysql.cursors.DictCursor)
main()

data base 내 일람 얻기



mysql의 select 문으로 데이터베이스 목록을 가져옵니다.
   cursor = connection.cursor()
   sql_state = "describe {}".format("sample_data")
   cursor.execute(sql_state)
   result = cursor.fetchall()
   for i in result:
       print(i)

등록된 데이터 얻기


   cursor = connection.cursor()
   sql_state = "SELECT * FROM {}".format("sample_data")
   cursor.execute(sql_state)
   result = cursor.fetchall()
   for i in result:
       print(i)

데이터 추가



데이터 추가는 INSERT 문으로 가능
SQL에서 현재 시간 등의 시간을 입력하고 싶은 경우는, Table의 시각의 포맷에 맞춘다
sample_data 테이블은 年-月-日 時:分:秒 형식이므로 time 라이브러리를 사용하여 시간 데이터 삽입
   import time    
   now = time.strftime('%Y-%m-%d %H:%M:%S')
   cursor = connection.cursor()
   table_name = "sample_data"
   sql_state = "INSERT INTO {} (str,date) VALUES (%s, %s )".format("sample_data")
   cursor.execute(sql_state,("お菓子",now))
   connection.commit()

이것을 SELECT 문으로 작성했는지 확인
   sql_state = "SELECT * FROM {}".format("sample_data")
   new_table_name = "sample_data"
   cursor.execute(sql_state)
   result = cursor.fetchall()
   for i in result:
       print(i)

출력 결과
{'id': 1, 'str': 'お菓子', 'date': datetime.datetime(2020, 4, 16, 10, 55, 25)}
{'id': 2, 'str': 'ご飯', 'date': datetime.datetime(2020, 4, 16, 10, 55, 47)}
{'id': 3, 'str': 'パン', 'date': datetime.datetime(2020, 4, 20, 10, 43, 17)}

기본적인 mysql 서버에의 액세스와 테이블의 등록, 데이터의 추가가 이것으로 할 수 있었다.

2021.3 추가



MySQL에서 형식 변경



데이터 구조의 설계로 float형 나오지 않으면 안되는 곳을 잘못해 int형으로 설계해 버려, 한편 데이터를 등록했을 경우의 대상 방법
price의 값이 정수형으로 좋은 생각이지만, 단수가 있을 수 있었기 때문에 본래는 float형으로 하지 않으면 안 되었다.
mysql> use database_name;
mysql> show tables;
+-------------------+
| Tables_in_finance |
+-------------------+
| sql_data          |
+-------------------+
mysql> describe sql_data
+------------------------+---------+------+-----+---------+----------------+
| Field                  | Type    | Null | Key | Default | Extra          |
+------------------------+---------+------+-----+---------+----------------+
| id                     | int(11) | NO   | PRI | NULL    | auto_increment |
| date                   | date    | NO   |     | NULL    |                |
| code                   | int(11) | NO   |     | NULL    |                |
| price                  | int(11) | YES  |     | NULL    |                |
| high_price             | int(11) | YES  |     | NULL    |                |
+------------------------+---------+------+-----+---------+----------------+
mysql> ALTER TABLE sql_data MODIFY price float
mysql> describe sql_data
+------------------------+---------+------+-----+---------+----------------+
| Field                  | Type    | Null | Key | Default | Extra          |
+------------------------+---------+------+-----+---------+----------------+
| id                     | int(11) | NO   | PRI | NULL    | auto_increment |
| date                   | date    | NO   |     | NULL    |                |
| code                   | int(11) | NO   |     | NULL    |                |
| price                  | float   | YES  |     | NULL    |                |
| high_price             | int(11) | YES  |     | NULL    |                |
+------------------------+---------+------+-----+---------+----------------+


float 변환하면 데이터를 일괄로 형식 변환해 주지만 시간이 걸린다

좋은 웹페이지 즐겨찾기