Python 10일차 데이터베이스 설정



  • Category : Python
  • Tag : Python


** 10일차 (빅데이터 처리 시스템 개발)**

복습퀴즈

(0) 기존 SQL Server를 설치한 가상머신은 스냅숏 해놓기. (1) Windows Server를 초기화 하고, MariaDB 10.3 버전을 설치 후 p52 구축

 --> 복사하지 말고 직접 입력하기.

(2) Windows Server를 초기화 하고, MySQL 5.7(32bit) 버전을 설치 후 p52 구축 –> 단, MySQL 서버만 설치하고 Workbench는 설치하지 말것 –> 클라이언트는 HeidiSQL을 검색해서, 다운로드 후 사용하기.

외부에서 접속하기(MySQL)

  • 서버

    . 서비스 작동 확인(MySQL) . 방화벽 포트 열기 확인(3306) . 서버 IP 주소 확인 . 외부접속 전용 사용자 생성 –> winUser@’%’

      CREATE USER winUser@'%' IDENTIFIED BY '비번';
      GRANT ALL ON *.* TO winUser@'%';
    
  • 클라이언트

    . Workbench 설치 . 접속 시도………

외부에서 접속 (SQL Server)

  • 서버
    . 서비스 작동 확인(MSSQLSERVER) --> SQL Server 구성 관리자
    . 방화벽 포트 열기 확인(1433)
    . 서버 IP 주소 확인
    . TCP 접속을 허용 --> SQL Server 구성 관리자 
      >> SQL Server 네트워크 구성에서 TCP/IP를 사용으로 변경
    . sa 사용자 접속 허용 : SSMS >> 보안 >> 사용자 >> sa
    
  • 클라이언트
      . HediSQL설치
      . SELECT * FROM sys.databases;
    

리눅스 가상머신 (MariaDB)

  • 서버 하드웨어
    . 네트워크1 --> Nat
    . 네트워크2 --> 호스트 전용
    . RAM 2048
    
  • 서버 설정 ``` .로그인 : root/PASSWORD .현재활동 » 터미널 . ip 설정 변경 : 오른쪽 위 클릭 후 [설정] 아이콘 –> 네트워크
    1. enp0s3 (외부용. Nat) –> DHCP
    2. enp0s8 (내부용.HostOnly) –> DHCP . reboot . IP 확인 (내부용, enp0s8) : ifconfig 192.168.56.106 ```
  • 서버에 MariaDB 설치 및 설정 ``` . 설치 : dnf -y install mysql-server . 서비스 작동 및 상시 가동 systemctl restart mysqld systemctl enable mysqld

. 방화벽 전체 끄기 systemctl stop firewalld systemctl disable firewalld

. 외부접속 전용 사용자 생성 –> winUser@’%’ mysql CREATE USER winUser@’%’ IDENTIFIED BY ‘비번’; GRANT ALL ON . TO winUser@’%’; EXIT . halt -p


# 퀴즈1. 리눅스에서 작업하기.

   리눅스 MySQL 터미널에서 p52 구축 (한영 전환은 Shift+Space 키)

# 퀴즈2. 리눅스를 [설치완료]로 초기화 한후.

   MariaDB 설치 후, PC의 HeidiSQL에서 접속하고 p52의 구축 (SQL은 복/붙해도 됨)
   설치는 mariadb-server,  서비스는 mariadb

# 퀴즈3. Windows Server 가상머신에,

   PC의 SSMS에서 접속한 후, p52의 구축 (SQL은 복/붙해도 됨)

# 퀴즈4. SQL Server에서 Select 하는 파이썬 코딩.

    (중요!) 다음 미션 전이 미리 다음을 정리하기.

- DBMS 설치법 요약 (MySQL, MariaDB, SQL Server, 리눅스 환경에서 설치도...)
- 외부 컴퓨터의 DBMS에 접속하기 위한 설정 및 방법 요약
- 데이터베이스 생성, 테이블 생성, 데이터 입력, 데이터 조회 쿼리문 요약
- 파이썬에서 데이터베이스 연동방법 요약

## 미션1. 리눅스 가상머신의 MariaDB에  p193 구성 (Insert문은 카페에 등록)

    단, DB 이름은 'sqlDB_자기이름영문약자'로... 예) 홍길동은 sqlDB_HKD
    테이블 이름도 '테이블이름_HDK' 형식으로..

## 미션2. Windows Server 가상머신의 SQL Server에 위 미션1과 동일 작업

## 미션3. 파이썬에서 미션1을 수행. 미션1의 테이블을 삭제하고, 파이썬에서 테이블 생성부터 데이터 조회까지 진행

## 미션4. 파이썬에서 미션2를 수행.

---

# 10-01. MySQL 연동 1
```python
import pymysql

## 전역 변수 선언부
conn, cur = None, None # 교량과 트럭

## 메인 코드부
#1. 서버와 교량을 연결하고, 빈트럭 준비
conn = pymysql.connect(host='192.168.56.105', user='winUser', password='4321',
            db='hanbitDB', charset='utf8')
cur = conn.cursor() # 빈 트럭 준비

#2. 트럭에 실을 물건(SQL)을 준비
sql = "CREATE TABLE IF NOT EXISTS user_table(uid CHAR(8), uname CHAR(5),"
sql += "uemail CHAR(20), byear INT)"

#3. 트럭에 물건을 실어서 가서 부어 넣기
cur.execute(sql)

#2. 트럭에 실을 문건(SQL)을 준비
uid, uname, uemail, byear = None, None, None, None
uid = input('아이디-->')
uname = input('이름-->')
uemail = input('메일-->')
byear = int(input('생년-->'))
sql = "INSERT INTO user_table VALUES('" + uid + "', '"
sql += uname + "', '" + uemail + "', " + str(byear) + ")"

#3. 부어 넣기
cur.execute(sql)
conn.commit()

# 끝. 정리하기
cur.close()
conn.close()
print('Ok')

10-02 MySQL 연동 2 - Select

import pymysql

## 전역 변수 선언부
conn, cur = None, None # 교량과 트럭

## 메인 코드부
#1. 서버와 교량을 연결하고, 빈트럭 준비
conn = pymysql.connect(host='192.168.56.105', user='winUser', password='4321',
            db='hanbitDB', charset='utf8')
cur = conn.cursor() # 빈 트럭 준비

#2. 물건(SQL) 준비 + 트럭에 실어서 부어 넣기
sql = "SELECT * FROM user_table"
cur.execute(sql)

#3. 돌아온 트럭(cur)에서 하나씩 꺼내기
while True :
    row = cur.fetchone() # 한칸 꺼내
    if row == None :
        break
    uid = row[0]
    uname = row[1]
    uemail = row[2]
    byear = row[3]
    print(uid, uname, uemail, byear)

# 끝. 정리하기
cur.close()
conn.close()
print('Ok')

10-03 SQL Server 연동 1

import pymssql

## 전역 변수 선언부
conn, cur = None, None # 교량과 트럭

## 메인 코드부
#1. 서버와 교량을 연결하고, 빈트럭 준비
conn = pymssql.connect(server='192.168.56.105', user='sa', password='p@ssw0rd',
            database='hanbitDB')
cur = conn.cursor() # 빈 트럭 준비

#2. 트럭에 실을 물건(SQL)을 준비
sql = "CREATE TABLE user_table(uid CHAR(8), uname CHAR(5),"
sql += "uemail CHAR(20), byear INT)"
#3. 트럭에 물건을 실어서 가서 부어 넣기
cur.execute(sql)

#2. 트럭에 실을 문건(SQL)을 준비
while True:
    uid, uname, uemail, byear = None, None, None, None
    uid = input('아이디-->')
    if uid == "" or uid == None :
        break
    uname = input('이름-->')
    uemail = input('메일-->')
    byear = int(input('생년-->'))
    sql = "INSERT INTO user_table VALUES('" + uid + "', '"
    sql += uname + "', '" + uemail + "', " + str(byear) + ")"
    #3. 부어 넣기
    cur.execute(sql)

conn.commit()


# 끝. 정리하기

cur.close()
conn.close()
print('Ok')

Share this post