반응형

2020/05/19 - [Django] - [Django] Template

 

Model이란?

 

- 장고에서 모델은 레이아웃 역할을 담당하고 있으며, 클래스로 테이블의 역할을 한다고 이해하면 될 것 같습니다.

- 해당 소스코드는 models.py 에 작성

 

다음과 같은 형태로 작성되는 것을 확인할 수 있습니다.

 

 

models에서 사용하는 대표적인 데이터 타입

CharField() 제한을 둘 수 있는 문자형 타입
'max_length = 숫자'를 입력하면 그 길이만큼 제한
TextFieldTextField() 데이터의 길이가 큰 경우 사용
IntegerField() 32비트의 정수형 형태
BooleanField() True False 의 경우 사용하며, Null은 앞에 Null을 추가해준다.
DateTimeField() 날짜와 시간 나타낼 때 사용. 날짜만 사용하고 싶다면 DateField, 시간만 사용하고 싶다면 TimeField를 사용한다.
DecimalField() 소수점을 이용해야 하는 경우 사용

 

 

반응형

'Django' 카테고리의 다른 글

[Django] URLS  (0) 2020.05.21
[Dango] DB 연결 및 Migrate  (0) 2020.05.21
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
반응형

Template 란?

 

- 얻은 데이터들을 포함한 웹 HTML 파일입니다.

 

- App 폴더 밑에 "templates" 라는 폴더를 만들고 그 안에 파일(*.html)을 생성

 

- 이는 App이 1개이거나 동일 템플릿명이 없을때 사용할 수 있다.

 

 

 

 

이제 view로 가서 어떻게 데이터를 가공할 뿌려줄지 정의할 함수를 만들어줍니다.

 

형태는 다음과 같습니다.

 

def 함수명(request):
	return render(request, '템플릿파일', 'Optional로 dict type 데이터 전달')

 

템플릿에서 사용하는 것들

템플릿 변수

 

템플릿 변수는 {{  }} 의 형태로 만들어 값이 해당 위치인 {{ }} 안에서 치환되며, 변수에는 변수 혹은 객체의 속성을 가질 수 있습니다.

 Name : {{ name }}

 

템플릿 태그

 

if문의 경우

{% if 조건 %}
	소스코드
{% else %}
	소스코드
{% endif %}



for문의 경우


{% for d in data %}
	반복할 소스코드
{% endfor %}

템플릿 태그 사용 후, 해킹 방지를 위해서

 {% csrf_token %}

를 추가해주셔야 합니다

반응형

'Django' 카테고리의 다른 글

[Dango] DB 연결 및 Migrate  (0) 2020.05.21
[Django] Model  (0) 2020.05.20
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
반응형

2020/05/19 - [Django] - [Django] Application

 

[Django] Application

각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요 2020/05/18 - [Django] - Django 란 ? Django 란 ? 각각의 .py 파일들이 하는 역할은 다음과 같습니다. urls.py - URL 요청을 처리, URL을.

lightchan.tistory.com

 

Django에서 View 역할 ?

 

- MVC 패턴의 웹 개발에서 Controller와 비슷한 역할을 합니다.

 

- View는 적절한 데이터를 모델로부터 얻어와 웹 페이지 결과를 도출할 수 있도록 컨트롤하는 역할을 한다.

 

- views.py 에 각 함수는 각각의 View를 정의해줍니다.

 

def MainFunc(request):
    return render(request, 'main.html')

 

해당 함수에서는 요청이 들어오면 'main.html'로 가도록 설정되어있습니다.

 

장고는 MTV( Model, Template, View ) 패턴을 따르고 있습니다.

 

Model

- 클래스를 만드는 역할이며, 데이터를 출력 시키는 모델을 생성합니다.

- 하나의 클래스는 DB에서 테이블 역할도 해줍니다.

 

Template

- HTML 파일로 화면에 출력해줄 웹 페이지를 해당 위치에 만들어줍니다.

 

View

- 메소드를 통하여 받으며, HTTPRequest를 받아 HTTPResponse로 응답해줍니다.

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
Django 란 ?  (0) 2020.05.18
반응형

각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요

2020/05/18 - [Django] - Django 란 ?

 

Django 란 ?

각각의 .py 파일들이 하는 역할은 다음과 같습니다. urls.py - URL 요청을 처리, URL을 기준으로 HTTP 요청을 알맞은 view 에 전달해주기 위해 사용합니다. 추가로, URL 매퍼(mapper)는 패턴(숫자 또는 문자)�

lightchan.tistory.com

Django에서 Project와 APP의 역할


1개의 프로젝트 안에 다양한 기능들이 있고, 기능들을 수행하는 여러개의 App으로 관리

 

 

- Django App 만드는 방법

python manage.py startapp 만들app이름

 

startapp을 통해 myapp 생성

- 만든 App을 사용 가능하게 하기

 

사용하여 '안녕하세요 Django App 사용해보기' 를 출력을 위해 views.py로 가서 다음과 같이 작성해줍니다.

 

views.py

from django.shortcuts import render

# Create your views here.
def MainFunc(request):
    return render(request, 'main.html')

그 다음 'main.html'이라는 웹에서 출력되어야하기 때문에 setting.py 와 urls.py 를 수정해줍니다.

 

 

settings.py

 

urls.py

 

 

여기서 import 추가 한 부분은 생성한 APP이름을 임포트 하고, 경로 설정은 자신이 설정한 'views.함수명'을 입력해주도록 합니다. 

 

이러한 과정이 끝나셨다면 프로젝트를 실행 후 웹에서 해당 주소를 입력후 접속하면 다음과 같이 정상 출력되는 것을 알 수 있습니다.

 

 

2020/05/19 - [Django] - [Django] View

 

[Django] View

2020/05/19 - [Django] - [Django] Application [Django] Application 각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요 2020/05/18 - [Django] - Django 란 ? Django 란 ? 각각의 .py 파일..

lightchan.tistory.com

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
Django 란 ?  (0) 2020.05.18
반응형

이클립스로 설정을 하고 공부하기 때문에, 이클립스로 하실분들중에 준비가 되지 않으신 분들께서는 아래 글을 먼저 참고해주시기 바랍니다.

 

2020/05/06 - [python] - python - 특징 & 설치

 

python - 특징 & 설치

파이썬을 어디에 사용하면 좋을까 ? - 시스템 유틸리티 시스템 명령어를 사용할 수 있는 각종 도구를 갖추고 있기 때문에 이를 바탕으로 갖가지 시스템 유틸리티를 만들 수 있다. - GUI 화면에 또

lightchan.tistory.com

 

 

step 1

 

 

 

설정을 다 하신 후 Next -> Next -> 하시게되면 다음과 같은 창에서 Finish 를 클릭해줍니다.

 

 

 

 

프로젝트 생성을 마치시면 프로젝트 창에 다음과 같이 생성된 것을 확인하실 수 있습니다

 

 

프로젝트에서 기본적으로 사용할 명령어는 다음과 같습니다.

 

 

장고 APP 생성하는 방법

# 아나콘다와 같은 가상환경 또는 타 프롬포트를 사용할 경우

 

cd 해당 경로
python manage.py startapp 'APP이름'

ex)
cd django_practice100
python manage.py startapp myapp

 

또는 이클립스에서 사용 하는 방법

 

 

 

데이터베이스의 변경 사항 적용 방법

python manage.py migrate

 

또는 이클립스의 경우

 

 

 

장고 프로젝트 실행 방법

python manage.py runserver

 

이클립스에서 사용할 경우

 

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
Django 란 ?  (0) 2020.05.18
반응형

 

각각의 .py 파일들이 하는 역할은 다음과 같습니다.

 

urls.py

- URL 요청을 처리, URL을 기준으로 HTTP 요청을 알맞은 view 에 전달해주기 위해 사용합니다.

추가로, URL 매퍼(mapper)는 패턴(숫자 또는 문자)을 맞추고 뷰 함수에 전달합니다.

 

urlpatterns = [
    path('', views.Main),
    path('list1', views.List1),
]

위 예시에서

path('', views.Main),

이 문장이 뜻하는바는 다음과 같습니다.

 

URL에 ' 해당 URL/ ' 와 같이 ' 해당 URL ' 다음 아무것도 찍히지 않으면,

 views.py 의 'Main' 함수를 실행한다는 의미입니다.

 

path('list1', views.List1),

그렇다면 위의 한줄은 URL에 '해당URL/' 다음에 'list1'이 찍히면,

views.py의 'List1'함수를 실행한다는 의미입니다.

 

views.py

- HTTP request(요청) 수신하고 response(응답) 반환 역할을합니다.

models.py을 통해 요청에 적절할 데이터를 가져옵니다.

 

def Main(request):
    return render(request, 'main.html')

def List1(request):
    makers = Maker.objects.all()
    return render(request, 'list1.html', {'makers':makers})

 

해당 소스코드를 살펴보겠습니다.

 

def Main(request):
    return render(request, 'main.html')

urls.py 에서 보셨듯이, path가 '' 경우 Main 함수로 와야한다고 하였습니다.

Main 함수는 main.html로 보내는 것을 알 수 있습니다.

 

def List1(request):
    makers = Maker.objects.all()
    return render(request, 'list1.html', {'makers':makers})

urls.py 에서 list1을 만난 경우 'List1' 함수를 통해 'list.html'에 model로 부터 알맞은 데이터를dict 형식으로 makers라는 sql 파일을 가져오는 것을 알 수 있습니다.

models.py

- APP의 구조 정의 및 DB 기록 추가,수정,삭제 기능을 하며, query를 제공하는 파이썬 객체 설정

 

class Maker(models.Model): 
    mname = models.CharField()
    tel = models.CharField()
    addr = models.CharField()

Maker라는 클래스에 models.Model을 상속받아, 파이썬 객체를 설정한 것을 알 수 있습니다.

 

Templates 폴더 내 html 파일

- 파일 구조 및 css과 같은 디자인을 담당하는 HTML 페이지, 내용을 보여주는데 필요한 텍스트 파일입니다.

 

{% for m in makers %}
<tr>
	<td>{{m.id}}</td>
	<td><a href="/list3?id={{m.id}}">{{m.mname}}</a></td>
	<td>{{m.tel}}</td>
	<td>{{m.addr}}</td>
</tr>
{% endfor %}

 

장고에서 사용하는 문법으로 HTML 페이지에 필요한 내용을 출력해주는 것을 볼 수 있습니다.

 

 

결론:

 

view는 HTML 파일을 이용하여 HTML 페이지를 작성하고 model에서 얻어온 데이터로 채웁니다.

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
반응형

스레드란 ?

 

- 1개의 프로세스가 1개의 일을 하지만,

스레드를 이용하면 동시에 여러 일을 수행 가능하게 해줍니다.

 

- Light Weight Process라고도 합니다.

 

스레드의 특징 및 장점

# process와 달리 값은 process 내에서 자원을 메소드 / 함수 자원을 공유합니다.

# 멀티 스레드를 사용하면 멀티테스킹이 가능합니다.

# CPU의 유효시간을 최소화 시킬 수 있다.

# idle time을 최소화하면서 메소드 단위로 진행 할 경우 메모리 절약, 여러개 응용프로그램을 동시 조작 가능

 

스레드를 사용하기 위해선 다음과 같은 모듈을 호출합니다.

import threading

 

Ex 1) 스레드를 사용한 경우와 사용하지 않은 경우 차이점 알기

 

def run(id):
    for i in range(1,4):
        print('id : {} --> {}'.format(id, i))

# thread를 사용하지 않는 경우
# 순서대로 출력합니다. -> 일 3번찍고 둘 3번찍고
run('일')
run('둘')        
print()


# 출력 결과

id : 일 --> 1
id : 일 --> 2
id : 일 --> 3
id : 둘 --> 1
id : 둘 --> 2
id : 둘 --> 3

프로그램종료

우선, 스레드를 사용하지 않은 소스코드입니다.

 

for문이 1부터 3번을 반속 수행하는데 스레드를 사용 하지 않았기 때문에, 하나의 작업을 끝마친후 다음 작업을 진행하는 것을 알 수 있습니다.

 

이번에는 스레드를 사용한 경우

 

- 여기서 스레드를 사용할 경우 랜덤으로 실행되지만, 실행 순서를 정해줄 순 없다.

변수명 = threading.Thread(target=스레드 진행할 함수, args=(돌릴 인자))

변수명.start() : 스레드 시작시 사용

변수명.join() : 스레드가 종료되길 기다릴 경우

변수명.run() : 스레드의 동작을 정의

 

import threading

def run(id):
    for i in range(1,4):
        print('id : {} --> {}'.format(id, i))
        time.sleep(0.3) # 동시에 돌아가는것을 보여주기위해 작성

th1 = threading.Thread(target=run, args=('일'))
th2 = threading.Thread(target=run, args=('둘'))

th1.start()
th2.start()

th1.join()
th2.join()


# 출력 결과

id : 일 --> 1
id : 둘 --> 1
id : 일 --> 2
id : 둘 --> 2
id : 일 --> 3
id : 둘 --> 3
프로그램종료

 

th1 스레드 1번 th2 스레드 1번 이 과정을 반복하여 실행되는 결과를 볼 수 있습니다.

 

다음으로 join() 함수를 사용하지 않고, 출력한 경우의 출력 결과입니다.

# 출력 결과

id : 일 --> 1
id : 둘 --> 1
프로그램종료
id : 일 --> 2
id : 둘 --> 2
id : 둘 --> 3
id : 일 --> 3

 

차이점은 다음과 같습니다.

join 함수를 사용하지 않으면 스레드가 끝나길 기다리지 않고, print() 문의 '프로그램종료' 를 출력 후 다시 작동하는 것을 볼 수 있습니다.

반면 join() 함수를 사용한 경우 스레드 과정을 다 마친 후에 print() 문을 출력한 사실을 알 수 있습니다.

 

 

Ex 2) thread와 time 모듈을 이용하여 날짜 및 시간을 출력하기

import time

 

time 모듈의 localtime() 함수를 가지고 존재하는 속성값

tm_year

년도(4자리 작성)

tm_mon

월(1~12)

 

tm_mday

일(1~31)

tm_hour

시(0~23)

tm_min

분(0~59)

tm_sec

초(0~60)

tm_wday

각 요일을 숫자로 나타냅니다. (월요일= '0')

tm_yday

1월 1일부터 오늘까지 일 수 (1~365)

 

# 이 소스코드는 스레드를 사용하지 않았습니다.

now = time.localtime()

print('현재는{}년  {}월 {}일'.format(now.tm_year, now.tm_mon, now.tm_mday))
print('{}시 {}분  {}초'.format(now.tm_hour, now.tm_min, now.tm_sec))
print('오늘은  {} 요일 이고 올해  {} 번째 날'.format(now.tm_wday, now.tm_yday))


# 출력 결과

현재는2020년  5월 15일
17시 25분  53초
오늘은  4 요일 이고 올해  136 번째 날
프로그램  종료

 

thread를 사용하여 현재 진행중인 시간 1초마다 반복 출력

 

import time
import threading

def cal_show():
    now = time.localtime()
    print('현재 {} 년  {} 월 {} 일'.format(now.tm_year, now.tm_mon, now.tm_mday), end = ' ')
    print('{} 시  {} 분   {} 초'.format(now.tm_hour, now.tm_min, now.tm_sec))

def myRun():
    while True:
        now2 = time.localtime()
        if now2.tm_min == 34: break
        cal_show()
        time.sleep(1)
  
th = threading.Thread(target=myRun)
th.start()
th.join()

print('프로그램  종료')


# 출력 결과

현재 2020 년  5 월 15 일 17 시  28 분   6 초
현재 2020 년  5 월 15 일 17 시  28 분   7 초
현재 2020 년  5 월 15 일 17 시  28 분   8 초
현재 2020 년  5 월 15 일 17 시  28 분   9 초
현재 2020 년  5 월 15 일 17 시  28 분   10 초
현재 2020 년  5 월 15 일 17 시  28 분   11 초
현재 2020 년  5 월 15 일 17 시  28 분   12 초
현재 2020 년  5 월 15 일 17 시  28 분   13 초
현재 2020 년  5 월 15 일 17 시  28 분   14 초
현재 2020 년  5 월 15 일 17 시  28 분   15 초
현재 2020 년  5 월 15 일 17 시  28 분   16 초
현재 2020 년  5 월 15 일 17 시  28 분   17 초
현재 2020 년  5 월 15 일 17 시  28 분   18 초
현재 2020 년  5 월 15 일 17 시  28 분   19 초
현재 2020 년  5 월 15 일 17 시  28 분   20 초

 

 

반응형
반응형

* 윈도우에서 python용 MySql(MariaDB) 드라이버 설치 방법

버전별 드라이버 다운로드 http://www.lfd.uci.edu/~gohlke/pythonlibs/

사이트에서 mysqlclient 로 검색하여 원하는 파일( mysqlclient-1..-cp3*-cp3*m-win_amd64.whl )을 다운로드하면 된다.

확장자를 zip으로 변경하고 압축을 풀어준다. 

풀린 파일과 폴더들을 복사한 후 C:\Python3*\Lib\site-packages 에 붙여넣기 하면 된다.

또는 pip install ... 해주면 된다.

이클립스에서 MariaDB를 연결하는 방법은 다음과 같습니다.

 

방법 1.

conn = MySQLdb.connect(host = '127.0.0.1', user = '사용자이름', password='비밀번호', database='DB명')

ex)
conn = MySQLdb.connect(host = '127.0.0.1', user = 'root', password='123', database='test')

또는 다음과 같이 작성해주시면됩니다.

 

config = {

    'host':'127.0.0.1',
    'user':'사용자이름',
    'password':'비밀번호',
    'database':'DB명',
    'port':3306,
    'charset':'utf8',
    'use_unicode':True
}

ex)

config = {

    'host':'127.0.0.1',
    'user':'root',
    'password':'123',
    'database':'test',
    'port':3306,
    'charset':'utf8',
    'use_unicode':True

}

 

이번에는 제가 만든 테이블에 데이터를 삽입하고 결과를 출력해보겠습니다.

 

table prac

CREATE TABLE prac(num INT(255) NOT NULL PRIMARY KEY,
NAME VARCHAR(20),
HOUR INT(11),
pay INT(11))
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

 

 

위 DB연결 코드 밑에 데이터 삽입 SQL문을 넣고 결과를 보겠습니다

 

try:
    conn = MySQLdb.connect(**config)
    print(conn) # DB가 잘 연결되었는지 확인
    cursor = conn.cursor() # SQL문 수행을 위한 커서 객체 생성
    
   
        
except Exception as e:
    print('err : ',  e) 
    
finally:
    cursor.close()
    conn.close()

# print(conn) 의 출력 결과
<_mysql.connection open to '127.0.0.1' at 0000025181F6F578>

try문 내의 코드는 다음과 같습니다.

 

- import MySQLdb 를 하여 MySQLdb 모듈을 불러옵니다.

 

- MySQLdb.connect(**config) 메소드를 통하여 MySQL에 연결해줍니다. 호스트명, 사용자명, 암호, 접속할 DB, 포트, 등을 기재합니다.

 

- DB 접속이 성공하면, Connection 객체로부터 cursor() 메서드를 호출하여 Cursor 객체를 가져옵니다.

 

- cursor 객체를 생성하였다면 이제 이 객체로 SQL의 DML 명령어들을 다 수행할 수 있습니다.

 

이제 자료를 추가하고 수정하고 삭제하는 DML 명령어들을 작성해보겠습니다. 

 

지금부터 작성되는 내용들은 try ~ except 안에 추가로 작성해주시면됩니다.

 

1. 자료 추가 ( insert ) , 자료 조회 ( select )

방법 1.

# 자료 추가
    sql = "insert into prac(num, NAME, HOUR, pay) values (1, '홍길동',3,8000)"
    cursor.execute(sql) # 결과가 1이면 commit한다 아니면 rollback execute에 사실 리턴값이 존재
    conn.commit()
    
#select 전체자료 읽기
    sql = 'select * from prac'
    cursor.execute(sql)
    
    # 출력1 튜플 타입으로 출력된다
    for data in cursor.fetchall():
        print(data)
        
        
# 출력결과

(1, '홍길동', 3, 8000)

 insert 문을 사용하여 각각의 컬럼에 맞게 값들을 입력해주었습니다.

 

이후 cursor객체에 execute를 사용해  실행할 sql문이 들어있는 변수를 입력해줍니다.

그 후 commit() 과정을 해주어야 합니다.

그 이유는 Autocommit 이 아니기때문입니다. 자동으로 commit 실행을 하고싶다면, connect() 메서드 호출시 autocommit=True 를 지정해줍니다.

 

insert문이 잘 실행되었는지 보기 위해 select 문도 작성하고, 반복문 for을 통해 데이터가 잘 삽입 되었는지 출력해보았습니다.

 

이번에는 다른 방법으로 insert 문과 select문을 사용해보겠습니다.

방법 2.

 sql = "insert into prac values(%s,%s,%s,%s)" # 자바는 values에 ?가 들어감
    sql_data = (2, 'insert2','5', 9000)
    cursor.execute(sql, sql_data)
    conn.commit()
    
    
    
     # 출력 2 
     # 반복문 for에 cursor 객체 값들을 r에 넣고 출력
     # list로 출력
    for r in cursor: 
    
     # 배열에 저장되는 값들은 다음과 같습니다.
        print([r[0], r[1], r[2], r[3]]) # r[0] = num값 r[1] name값 r[2] HOUr값 r[3] pay값 저장     
        
# 출력 결과

[1, '홍길동', 3, 8000]
[2, 'insert2', 5, 9000]


 

방법 3.

 

    sql = "insert into prac values(%s,%s,%s,%s)" # 자바는 values에 ?가 들어감
    sql_data = '3','insert3',5,6000
    cursor.execute(sql, sql_data)
    conn.commit()

# 출력 3
# 이번에는 매핑을 이용하여 서로 값이 일치하게 저장되도록 합니다.
    for (num, NAME, HOUR, pay) in cursor:
        print(num, NAME, HOUR, pay)
       	print()

# 출력4
    for (a, b, c, d) in cursor: # 매핑한거라 값은 같게 출력
        print(a, b, c, d)

# 출력 결과

1 홍길동 3 8000
2 insert2 5 9000
3 insert3 5 6000

1 홍길동 3 8000
2 insert2 5 9000
3 insert3 5 6000

 

update / delete 문 사용 후 출력 방식은 출력 1에서 사용한 방법으로 출력하도록 하겠습니다.

 

2. UPDATE

# 자료 수정

    sql = "update prac set NAME = %s, HOUR=%s, pay=%s where num=%s"
    sql_data = ('홍씨에서이씨', 5, 10000, 1)
    cursor.execute(sql, sql_data)
    conn.commit()


    #select 전체자료 읽기
    sql = 'select * from prac'
    cursor.execute(sql)
    
    # 출력1

    for data in cursor.fetchall():
        print(data)
        
        
# 출력 결과

(1, '홍씨에서이씨', 5, 10000)
(2, 'insert2', 5, 9000)
(3, 'insert3', 5, 6000)

 

3. DELETE

 

방법 1)

 

    # 자료 삭제 
    num = '1'
    sql = "delete from prac where num = " + num #권장x
    cursor.execute(sql)
    conn.commit()


	# 출력 결과
    
    (2, 'insert2', 5, 9000)
	(3, 'insert3', 5, 6000)

 

방법 2)

 

    num = '2'

    sql = "delete from prac where num='{0}'".format(num) 
    cursor.execute(sql)
    conn.commit()
    
    
    # 출력 결과
    
    (3, 'insert3', 5, 6000)

 

방법 3)

 

    num = '3'

    sql = "delete from prac where num=%s" #가장많이 쓰는 방법 밑에 cursor와 매핑 할땐 튜플형태로 줘라
    cursor.execute(sql, (num, ))
    conn.commit()
    
    
    # 출력 결과
    
    

 

참고사이트

 

https://cafe.daum.net/flowlife

 

반응형

'python' 카테고리의 다른 글

[python] Numpy 데이터타입, 메모리저장, 배열  (0) 2020.05.28
python - Thread ( 스레드 ) (1)  (0) 2020.05.14
python - 예외처리  (0) 2020.05.11
python - OS & pickle  (0) 2020.05.11
python - 상속 (2)  (0) 2020.05.10

+ Recent posts