Synology NAS DS218을 사용하여 mysql을 사용해보기
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)
id
는 auto_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 변환하면 데이터를 일괄로 형식 변환해 주지만 시간이 걸린다
Reference
이 문제에 관하여(Synology NAS DS218을 사용하여 mysql을 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yshr1982/items/6160187417b1e27ce057
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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>
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)
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)
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 변환하면 데이터를 일괄로 형식 변환해 주지만 시간이 걸린다
Reference
이 문제에 관하여(Synology NAS DS218을 사용하여 mysql을 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yshr1982/items/6160187417b1e27ce057텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)