$ pip install pymysql
- mysql 에 있는 user 테이블의 root 계정의 plugin 값을 빈값으로 해야 파이썬에서 연결 할 수 있다.
- user테이블은 mysql 데이터베이스 안에 있기 때문에 이렇게 해준다.
$ sudo mysql -u root
MariaDB [(none)]> use mysql
MariaDB [mysql]> update user set plugin='';
MariaDB [mysql]> FLUSH PRIVILEGES;

- 테스트를 위해 mydb라는 데이터베이스를 만들었다.
MariaDB [(none)]> create database mydb;

MariaDB [mydb]> CREATE TABLE sensordata (
-> id INT NOT NULL,
-> co DECIMAL(5,2) NULL,
-> pm10 DECIMAL(5,2) NULL ->
);

MariaDB [mydb]> ALTER TABLE sensordata ADD PRIMARY KEY (id);

- 테스트 용으로 값을 하나 INSERT 해 보았다.
MariaDB [mydb]> INSERT INTO sensordata VALUES(1, 0.01, 10);

- sensordata 테이블에 있는 값을 보여주는 쿼리문 이다.
import pymysql
db = pymysql.connect(host='localhost', user='root', password='raspberry',
db = 'mydb', charset='utf8')
cur = db.cursor()
cur.execute("SELECT * FROM sensordata")
rows = cur.fetchall()
print(rows)
db.close()

- sensordat 테이블에 값을 insert 하는 쿼리문도 짜 보았다
import pymysql
def insert_sensordata(id: int, co: float, pm10: float) :
db = pymysql.connect(host='localhost', user='root', password='raspberry',
db = 'mydb', charset='utf8')
cur = db.cursor()
sql = "INSERT INTO sensordata VALUES (%s, %s, %s)"
val = (id, co, pm10)
cur.execute(sql, val)
db.commit()
print(cur.rowcount, "record inserted")
insert_sensordata(2, 0.02, 20)

참고 자료