장비마다 가지는 고유한 속성값은 여러개가 있을 수 있다. 이 중에서 손쉽게 구할 수 있고, 비교적 고유한 것으로 추정해도 큰 문제가 없는 것으로 이더넷의 MAC ADDRESS가 있다. 파이썬에서 이 값을 얻는 방법 중 UUID 모듈의 getnode를 이용하는 것이 가장 손쉽다. 16진법으로 변경한 다음 3번째 글자부터 이용하면 된다.
### import uuid
### hex(uuid.getnode())
'0x180373e258a0'
장비마다 가지는 고유한 속성값은 여러개가 있을 수 있다. 이 중에서 손쉽게 구할 수 있고, 비교적 고유한 것으로 추정해도 큰 문제가 없는 것으로 이더넷의 MAC ADDRESS가 있다. 파이썬에서 이 값을 얻는 방법 중 UUID 모듈의 getnode를 이용하는 것이 가장 손쉽다. 16진법으로 변경한 다음 3번째 글자부터 이용하면 된다.
### import uuid
### hex(uuid.getnode())
'0x180373e258a0'
psycopg2 를 이용하면 편하게 PostgreSQL에 접근하여 자료를 다룰 수 있다. 편하게 이용할 수 있는 방법인 반면에 DB 접속 권한이 노출된다는 단점이 있다.
따라서, PostgreSQL이 설치된 서버에 RESTful API를 이용하여 자료를 전달하도록 한다. 보안 접속은 차차 구현해 보기로 하고, 기본형으로 시작한다.

찾아보면 더 좋은게 있을지도 모르겠다. 최근까지 업데이트 흔적이 있고, 스폰서가 있는 PostgREST를 이용해 보기로 했다. 예제는 다음을 참고했다.
https://postgrest.org/en/stable/tutorials/tut0.html
설치 파일을 다운 받는다.
https://github.com/PostgREST/postgrest/releases/tag/v7.0.1
tar.xz 파일이 이상하게도 압축이 안풀려서 Windows에서 풀어서 설치 파일을 복사해서 사용했다. 환경 설정 파일 없이 실행하면 친절하게 최소한의 옵션에 따라서 환경 설정 파일을 만들라고 한다. 사용자 계정, 계정의 비밀번호, DB 이름, 스키마 이름, role을 지정한다.
$ nano tutorial.conf
db-uri = "postgres://user:pass@localhost:5432/dbname"
db-schema = "public"
db-anon-role = "postgres"
작성 후 실행한다. 적절하게 만들어졌다면 다음과 같이 실행된다. 기본적으로 3000 포트를 이용한다.
$ ./postgrest tutorial.conf
Attempting to connect to the database...
Listening on port 3000
Connection successful
curl을 이용해서 테이블을 조회하여 본다. tablename이라는 테이블 내용을 조회하고 싶다면 다음과 같이 실행한다.
$ curl http://server:3000/tablename
JSON 포맷으로 tablename 테이블에 자료를 입력(POST)하고 싶다면 다음과 같이 입력한다.
$ curl http://server:3000/tablename -X POST \
-H "Content-Type: application/json" \
-d '{"source_id": "200",
"person_id": "15258756"}'
테이블 이름이 tablename이고, col1의 값이 1234인 열의 자료를 조회하고 싶다면 다음과 같이 한다. 연산자는 다음의 링크를 참조한다.
https://postgrest.org/en/v7.0.0/api.html
$ curl http://server:3000/tablename?col1=eq.1234
파이썬에서는 다음과 같이 한다. requests를 이용한다. POST는 다음과 같이 하면 된다.
>>> import requests
>>> requests.post('http://server:3000/tablename ', data={'col1': '1234'})
GET을 하는 방법은 2가지 방법이 있는 것 같은데 일단은 curl을 시도한 것과 유사한 형식으로 하면 된다. JSON 포맷으로 받으려면 다음과 같이 한다.
>>> tmp = requests.get('http://server:3000/tablename?col1=eq.1234').json()
>>> tmp[0]['col1']
지난번에는 바코드를 만들어 보았으니 이번에는 QR코드를 만들어 본다. 파이썬에는 qrcode와 PyQRCode 모듈이 검색이 된다. 이 중에서 qrcode가 비교적 최근에 업데이트한 흔적이 있으므로 이것을 선택하였다. PIP로 설치한다.
$ pip3 install qrcode
https://pypi.org/project/qrcode/
홈페이지에 들어가면 추가 옵션이 더 기술되어 있다. 필요하면 참고하자.
QR코드에는 많은 내용을 넣을 수 있는 것이 장점이다. 그리고 의외의 것으로 웹 사이트 링크를 연결하는 방법은 설명을 찾기가 힘들다. 그냥 http://www.example.net 이나 http://www.example.net/ddd.html 과 같은 형식으로 만들면 연결이 된다. 파일 저장은 .save를 붙여서 한다.
>>> import qrcode
>>> img = qrcode.make('http://10.10.10.82')
>>> img.save('qr.png')
Python에서 바코드는 비교적 쉽게 만들 수 있다. 우선 PIP로 패키지를 설치한다.
$ pip3 install python-barcode
예를 들어 CODE-128 규격의 바코드를 PNG 포맷으로 저장하기 위해서는 다음과 같이 한다.
>>> import barcode
>>> barcode.get('code128', 문구, writer=barcode.writer.ImageWriter()).save(경로)
이 다음에는 그림 파일을 잘 정렬하면 된다. 세포 진단 확인할 때마다 불편해서, 버티다가 이번에 만들어 보았다.
