본문 바로가기
Python/PythonLibrary

pymysql / sqlalchemy

by leehii 2022. 9. 27.

#  도구 불러오기

import pymysql

from sqlalchemy import create_engine

 

 

#  db 연결설정

db = pymysql.connect( 

            user = '아이디',

            passwd = '비번',

            host = '호스트번호',

            port = port번호,

            db = '지정한 db이름',

            charset = 'utf8' )

 

 

cursor = db .cursor()  # 튜플 형태로 반환

cursor = db .cursor(pymysql.cursors.DictCursor)  # 딕셔너리 형태로 반환

 

 

 

#  engine 설정

engine = create_engine(

"mysql+pymysql://아이디:"+"비번"+"@호스트주소:포트번호/DB이름?charset=utf8", encoding = "utf-8")

 

conn = engine.connect()

 

 

 

#  db 실행

sql ='sql문 작성'    # 실행할 sql 문장 작성

cursor.excute(sql)     # sql 실행

result = cursor.fetchall()   # 결과값 받기

 

혹은

data = pd.read_excel('파일명.확장자')

data.to_sql( name = 'table명', con = engine,

                       if_exist = ?, index = False)

 

를 이용해서 excel 파일을 바로 db에 연동할 수 있음

:   name은 테이블 이름

:   con은 Cursor 객체

:   index는 DataFrame의 index를 DB에 컬럼으로 추가할지의 여부

:   if_exist는 테이블이 있을 경우를 설정.

    기본값 fail (아무 동작 수행안함) /

     append (데이터만 추가) /

     replace (기존 테이블 삭제, 새 테이블 추가)

 

 

sql문

# SELECT (COMMIT 안함)

sql = """
SELECT * FROM test_table
"""
cursor.execute(sql)
result = cursor.fetchall() #  결과값 받아오기
result = pd.DataFrame(result) # 결과값 데이터프레임화 (안해도 됨)

# 검색

select [ col1], [col2], ... [n번째 col] from [테이블명]

 

#조건검색

select * from [테이블명] where 컬럼명1 = 'row값' and 컬렴명2 = 'row값'

 

# a로 시작하는 / a가 들어가는 조건검색

select * from [테이블이름] where col1 = 'a%'

select * from [테이블이름] where col1 = '%a%'

 

 

 

# CREATE

sql = """
CREATE TABLE test_table(
    index  INT NOT NULL,
    name VARCHAR(256) NOT NULL,
    nick VARCHAR(256) NOT NULL
    PRIMARY KEY (name)
    );
"""

cursor = db.cursor()

cursor.execute(sql)
db.commit()
db.close()
# INSERT
sql = """  
INSERT INTO test_table(name, nick)
VALUES ('이름 값','닉네임 값');
"""

cursor.execute(sql)
db.commit()
db.close()
# UPDATE

sql = 
'''UPDATE test_table
SET 시도명 = '부산광역시', 시군구명 = '해운대구'
WHERE 시도명 != '부산광역시';
'''

cursor.execute(sql)
db.commit()
db.close()

update [table이름] set [칼럼1]=[값], [칼럼2]=[값], ... where [조건절]

 

# DELETE

sql = 
'''DELETE FROM test_table
WHERE 조건절;
'''

cursor.execute(sql)
db.commit()

delete from [테이블이름] where [조건절]

 

 

- mysql 사용자 목록 확인

 

select host, user, authentication_string from user;

 

 

- mysql 사용자 권한부여

 

grant select, insert, update, delete, create, drop, alter on

kukjindb.% to ‘leekukjin’@’localhost’ identified by ‘pw1234’;

 

>> kukjindb 라는 데이터베이스의

leekukjin유저에게

비밀번호를 pw1234로 권한을 준것

 

grant all prvilleges on kukjindb.% to

leekukjin’@’%’ identified by ‘pw1234’;

 

- mysql 사용자 추가 -

 

create user '유저이름'@'%' identified by '비밀번호';

>> 외부접근 허용

 

create user ‘유저이름'@'localhost' identified by '비밀번호';

>> 로컬호스트만 가능

 

insert into user(host, user, authentication_string)  values ('%', '유저이름', '비밀번호' );

 

 

- mysql 사용자 삭제

 

drop user '유저이름'@'%';

delete from user where user='유저이름'

 

- mysql 사용자 추가,삭제, 권한변경사항 적용

 

 flush privileges;

>> create, insert, delete, drop등으로 사용자 변경사항 적용할때 마지막에 넣어줘야함

 

 

 

- mysql  table 이름 변경 

 

ALTER TABLE [테이블명] RENAME [변경할 테이블명];

 

 

- mysql  table 컬럼 이름 변경 

 

ALTER TABLE [테이블명] CHANGE colname [변경할 컬럼명] [변경할 컬 럼 타입];

 

 

- mysql  table 컬럼 속성 수정 

 

ALTER TABLE [테이블명] MODIFY [컬럼명] [변경할 컬럼 타입];

 

 

- mysql  table 컬럼 추가 

 

ALTER TABLE [테이블명] ADD [추가할 컬럼명] [추가할 컬럼 데이터형];

 

- mysql  table 컬럼 삭제 

 

ALTER TABLE [테이블명] DROP [삭제할 컬럼명];