100일 챌린지/빅데이터기반 인공지능 융합 서비스 개발자

Day 85 - python database 연동하기 (1) mysql

ksyke 2024. 11. 28. 12:45

목차

    데이터베이스 테이블 만들고 수정,삭제,읽기

    import sqlite3
    conn=sqlite3.connect('data01.db')
    
    print(conn)
    cur=conn.cursor()
    
    cur.execute('drop table dept')
    cur.execute('''create table dept(
                                deptno int primary key,
                                dname varchar(10),
                                loc varchar(10)
                                )''')
    cur.execute("insert into dept values (1111,'test1','test')")
    
    arr=[
        (2222,'test2','test'),
        (3333,'test3','test'),
        (4444,'test4','test'),
        (5555,'test5','test'),
    ]
    for row in arr:
        cur.execute("insert into dept values ({},'{}','{}')".format(row[0],row[1],row[2]))
    
    cur.execute("insert into dept values (?,?,?)",(6666,'test6','test'))
    
    conn.commit()
    cur.execute("update dept set loc='테스트 지역' where deptno=2222")
    cur.execute("delete from dept where deptno=3333")
    conn.commit() #conn.rollbac()
    
    cur.execute('select * from dept')
    result01=cur.fetchall()
    print(result01)
    cur.execute('select * from dept where deptno=2222')
    result02=cur.fetchone()
    print(result02)
    
    conn.close()

    데이터베이스 접속하기

    import mysql.connector as mydb
    
    conn=mydb.connect(
      host="localhost",
      user="scott",
      password="tiger"
    )
    cur=conn.cursor()
    cur.execute('create database testdb2')
    cur.execute('show databases')
    
    for x in cur:
      print(x)
    
    conn.close()
    import mysql.connector as mydb
    
    conn=mydb.connect(
      host="localhost",
      user="scott",
      password="tiger",
      database="xe"
    )
    cur=conn.cursor()
    
    cur.execute('show tables')
    for row in cur:
      print(row)
    print('#'*50)
    
    print(cur.rowcount)
    
    # cur.execute("insert into dept values ({},'{}','{}')".format(51,'test','test'))
    # cur.execute("insert into dept values (%(deptno)s,%(dname)s,%(loc)s)",{
    #     'deptno':52,'dname':'test52','loc':'test'
    # })
    conn.commit()
    
    cur.execute('select * from dept')
    # for row in cur:
    #   print(row)
    result01=cur.fetchall()
    print(result01)
    
    conn.close()

    Oracle database 사용하기 

    가상환경 사용하기 

    Pycharm 다운로드

    https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows

     

    PyCharm 다운로드: 데이터 과학 및 웹 개발을 위해 JetBrains가 만든 Python IDE

     

    www.jetbrains.com

    python으로 서버 만들기

    from http.server import HTTPServer,BaseHTTPRequestHandler
    import io
    
    class MyRequestHandler(BaseHTTPRequestHandler):
        def __init__(self, request, client_address, server):
            super().__init__(request, client_address, server)
    
        def do_GET(self):
            # print(dir(self))
            print(self.requestline)
            self.send_response(200)
            self.end_headers()
            # idx=io.FileIO('index.html')
            # self.wfile.write(idx.readall())
            self.wfile.write(bytes('hello world',encoding='utf-8'))
            
    
    def run(server_class=HTTPServer, handler_class=MyRequestHandler):
        server_address=('',8080)
        httpd=server_class(server_address,handler_class)
        httpd.serve_forever()
    
    if __name__=='__main__':
        run()

    fast api

    from typing import Union
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
    
    
    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: Union[str, None] = None):
        return {"item_id": item_id, "q": q}

    import fastapi
    
    app=fastapi.FastAPI()
    
    @app.get('/')
    def index():
        print('index call...')

    decorator 사용하기

    def func00(msg):
        def func01(f):
            def func02():
                print('before',msg)
                f()
                print('after')
            return func02
        return func01
    
    # func01(lambda :print('test'))()
    
    @func00('val')
    def func03():
        print('func03 run')
    
    func03()