✨ pymysql

Haks.·2024년 12월 6일
0

How to use

목록 보기
2/32

📝 pymysql 접속


# 1. 데이터베이스 불러오기
import pymysql 
db = pymysql.connect(  ##접속 edit 하면 나오는것 입력
host='localhost', # 127.0.0.1 , 0.0.0.0 
port=3306, 
user='root', # root 이
passwd='0000', #비밀번호 입력 
db='데이터베이스명', #연결할 database 명 워크밴치에 있어야댐!!
charset='utf8'

# 2. 커서 가져오기
cusror = db.cursor()ㄷ
또는
try :
	with db.cursor as cursor:
    # 3. sql 테이블 만들기
    sql = """
       CREATE TABLE product (
       PRODUCT_CODE VARCHAR(20) NOT NULL,
       TITLE VARCHAR(200) NOT NULL,
       ORI_PRICE INT,
       DISCOUNT_PRICE INT,
       DISCOUNT_PERCENT INT,
       DELIVERY VARCHAR(2),
       PRIMARY KEY(PRODUCT_CODE)
       );
       """  #<- 워크밴치 에서 처럼 생성 sql 생성
      # 4. sql 구문 실행하기
      cursor.execute(SQL)
      # 5. sql complete ,SELECT 구문은 새로 고친것이 없기에 사용하지 않는다.
      db.commit()
# 6. 종료
db.close()
또는
finally :
	db.close()
  • 권한 부여, 사용자 삭제
# 로컬호스트 경로의 username이라는 유저에 .(전체권한)을 부여하겠다.
GRANT ALL PRIVILEGES ON . TO 'username'@'localhost';
FLUSH PRIVILEGES; # 변경된 권한을 적용
SHOW grants FOR 'username'@'localhost'; #부여된 권한을 확인
SHOW grants; # 현재 로그인한 유저의 권한을 확인

USE mysql;
DROP USER 'username'@'%';

📝 INSERT ,SELECT,UPDATE


# 2번까지 동일
# 테이블을 값 만드는 코드 작성
for i in range(10):
    product_code = 215673140 + index + 1
    SQL = """
    INSERT INTO product VALUES
        ('""" + str(product_code) + """',
        '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'
        );
    """
    print(SQL)
    cursor.execute(SQL) # 실행
    sql = """
    UPDATE Products SET stockQuantity = stockQuantity - %s
    WHERE productID = %s 
    """
    cursor.execut(sql,(10,3))# 10개를 빼줘 아이디가 3번인 것에대헤
  • 데이트 조회 코드 (SELECT)
  • fetchall() : 쿼리 결과의 모든행 , 결과는 튜플로 반환 ,각내부 튜플은 하나의 레코드 반환
  • fetchone() : 한줄, 실행될때마다 다음줄로 넘어가서 반환 , 끝나면 None
  • fecthmany(size) : size 줄 만큼
 cursor.execute("SELECT * FROM 테이블명")
 rows = cursor.fetchall()
 for row in rows:
    print(row)
 ,
 row = cursor.fetchone()
 while row is not None :
    print(row)
    row=cursor.fetchone()

📝 파이썬 크롤링


import pymysql

db = pymysql.connect(
        host='localhost', # 127.0.0.1 , 0.0.0.0 
        port=3306, 
        user='이름', # root
        passwd='패스워드', 
        db='연결할 데이터베이스 명', 
        charset='utf8')
cursor = db.cursor()
import requests
from bs4 import BeautifulSoup

for page_num in range(10):
    if page_num == 0:
        res = requests.get('https://000000/')
    else:
        res = requests.get('https://0000/page'+str(page_num+1))
    soup = BeautifulSoup(res.content,'html.parser')
    data = soup.select('div.00-00') #다가져오는것
    for 00 in 00 :
        00 = 00.00('00').get_text().replace('000','').strip()#없애는과정.
        00 = 00.select_one('00').get_text().replace('00:','').strip()
        print(category,product)
        SQL ="""INSERT INTO 00 (00,00) VALUES('00','00');""" #지정된 타입에 맞는 값
        print(SQL)
        cursor.execute(SQL)
        
db.commit()
db.close()

# SQL="""SELECT * FROM 00 WHERE CATEGORY = '00'; """
# SQL="""SELECT DISTINCT 00 FROM 00"""
SQL = """SELECT 00, COUNT(*) FROM 00 GROUP BY 00"""
cursor.execute(SQL)
rows=cursor.fetchall()
for row in rows:
    print(row) # row 인덱스 넣어서 가능

        
db.commit()
db.close()


📌 grammers


try:

finally:
# 파이썬에서 예외 처리시 리소스 정리를 보장하기 위해 사용하는 구조
예외가 발생하든 하지않든 finally 블록은 항상!! 실행 됩니다.
데이트 베이스 연결이 실패하여도 finally 부분은 실행이 됩니다.
  1. LAST_INSERT_ID()

    * FOREIGN KEY 로 연결되어 있는 테이블을 삽입할떄 pymysql 에서 위에 부모 테이블에 삽입후 진행하는 과정에서 부모 테이블에
    새로 생성된 곳에 넣을려면 id 값에 LAST_INSERT_ID()을 넣어 주어야 한다.
  2. WITH

    • 읽기 쉬운 코드를 작성 가능 , 이름을 부여하기에
    • 동일한 계산을 여러번 참조할때 효율 (서브쿼리는 단일성이기에)

0개의 댓글

관련 채용 정보