Python 을 사용 하여 MySQL 데이터 조작
PyMySQL 이 뭐 예요?
PyMySQL 은 Python 3.x 버 전에 서 MySQL 서버 를 연결 하 는 라 이브 러 리 이 고 Python 2.x 에 서 는 my sqldb 를 사용 합 니 다.
PyMySQL 설치
PyMySQL 을 사용 하기 전에 PyMySQL 이 설치 되 어 있 는 지 확인 해 야 합 니 다.
PyMySQL 다운로드 주소:https://github.com/PyMySQL/PyMySQL.
만약 설치 되 지 않 았 다 면,우 리 는 다음 명령 을 사용 하여 최신 버 전의 PyMySQL 을 설치 할 수 있 습 니 다.
$ pip install PyMySQL
시스템 이 pip 명령 을 지원 하지 않 는 다 면 다음 과 같이 설치 할 수 있 습 니 다.1.git 명령 을 사용 하여 설치 패 키 지 를 다운로드 합 니 다(수 동 으로 다운로드 할 수 있 습 니 다).
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL
$ python3 setup.py install
2.버 전 번 호 를 만 들 려 면 curl 명령 으로 설치 할 수 있 습 니 다.
$ # X.X PyMySQL
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
메모:위 모듈 을 설치 할 루트 권한 이 있 는 지 확인 하 십시오.데이터베이스 연결
데이터 베 이 스 를 연결 하기 전에 다음 사항 을 확인 하 십시오.
실례:
다음 인 스 턴 스 는 Mysql 의 TESTDB 데이터 베 이 스 를 연결 합 니 다.
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor() cursor
cursor = db.cursor()
# execute() SQL
cursor.execute("SELECT VERSION()")
# fetchone() .
data = cursor.fetchone()
print ("Database version : %s " % data)
#
db.close()
데이터베이스 시트 만 들 기만약 에 데이터베이스 연결 이 존재 한다 면 저 희 는 execute()방법 으로 데이터 베 이 스 를 만 들 수 있 습 니 다.다음 과 같은 생 성 표 EMPLOYEE:
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor() cursor
cursor = db.cursor()
# execute() SQL,
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
#
db.close()
데이터베이스 삽입 작업다음 인 스 턴 스 는 SQL 삽입 문 구 를 실행 하여 표 EMPLOYEE 에 기록 을 삽입 합 니 다.
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# sql
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
#
db.close()
이상 의 예 도 다음 과 같은 형식 으로 쓸 수 있다.
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# sql
cursor.execute(sql)
# sql
db.commit()
except:
#
db.rollback()
#
db.close()
데이터베이스 조회 조작Python 조회 Mysql 은 fetchone()방법 으로 단일 데 이 터 를 가 져 오고 fetchall()방법 으로 여러 데 이 터 를 가 져 옵 니 다.
실례:
EMPLOYEE 표 에서 salary(급여)필드 가 1000 이상 인 모든 데 이 터 를 조회 합 니 다.
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
try:
# SQL
cursor.execute(sql)
#
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
#
print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income ))
except:
print ("Error: unable to fecth data")
#
db.close()
데이터베이스 업데이트 작업업데이트 작업 은 데이터 시트 의 데 이 터 를 업데이트 하 는 데 사 용 됩 니 다.다음 인 스 턴 스 는 TESTDB 표 의 SEX 필드 를 모두'M'으로 수정 하고 AGE 필드 는 1 증가 합 니 다.
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1
WHERE SEX = '%c'" % ('M')
try:
# SQL
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
#
db.close()
삭제 작업삭제 작업 은 데이터 시트 의 데 이 터 를 삭제 하 는 데 사 용 됩 니 다.다음 인 스 턴 스 는 데이터 시트 EMPLOYEE 에서 AGE 가 20 이상 인 모든 데 이 터 를 삭제 하 는 것 을 보 여 줍 니 다.
#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
#
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# cursor()
cursor = db.cursor()
# SQL
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
# SQL
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
#
db.close()
실무,일,총무사무 메커니즘 은 데이터 의 일치 성 을 확보 할 수 있다.
사 무 는 원자 성,일치 성,격 리 성,지속 성 등 네 가지 속성 을 가 져 야 한다.이 네 개의 속성 을 통상 적 으로 ACID 특성 이 라 고 부른다.
실례
# SQL
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
# SQL
cursor.execute(sql)
#
db.commit()
except:
#
db.rollback()
트 랜 잭 션 을 지원 하 는 데이터 베 이 스 는 Python 데이터베이스 프로 그래 밍 에서 커서 가 만들어 지면 자동 으로 스텔스 데이터 베 이 스 를 시작 합 니 다.commt()방법 커서 의 모든 업데이트 작업,rollback()방법 은 현재 커서 의 모든 작업 을 스크롤 합 니 다.모든 방법 이 새로운 일 을 시작 했다.
오류 처리
이상 하 다
묘사 하 다.
Warning
심각 한 경고 가 있 을 때 트리거 합 니 다.예 를 들 어 데 이 터 를 삽입 하 는 것 은 차단 되 는 등 입 니 다.Standard Error 의 하위 클래스 여야 합 니 다.
Error
경고 이외 의 모든 오류 클래스.Standard Error 의 하위 클래스 여야 합 니 다.
InterfaceError
데이터베이스 인터페이스 모듈 자체 의 오류 가 발생 했 을 때 발생 합 니 다.Error 의 하위 클래스 여야 합 니 다.
DatabaseError
데이터베이스 와 관련 된 오류 가 발생 했 을 때 발생 합 니 다.Error 의 하위 클래스 여야 합 니 다.
DataError
데이터 처리 시 오류 가 발생 했 을 때 발생 합 니 다.예 를 들 어 제로 오류,데이터 범위 초과 등 입 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
OperationalError
사용자 가 제어 하지 않 고 데이터 베 이 스 를 조작 할 때 발생 하 는 오 류 를 말한다.예 를 들 어 연결 이 예상 치 못 하 게 끊 기 고 데이터 베 이 스 를 찾 을 수 없 으 며 트 랜 잭 션 처리 실패,메모리 할당 오류 등 데이터 베 이 스 를 조작 하 는 것 은 발생 하 는 오류 입 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
IntegrityError
외부 키 검사 실패 등 완전 성 관련 오류.DatabaseError 하위 클래스 여야 합 니 다.
InternamError
데이터베이스 의 내부 오류,예 를 들 어 커서(cursor)가 효력 을 잃 었 거나 트 랜 잭 션 동기 화 에 실 패 했 습 니 다.DatabaseError 하위 클래스 여야 합 니 다.
ProgrammingError
프로그램 오류,예 를 들 어 데이터 시트(table)를 찾 지 못 했 거나 존재 하지 않 았 거나 SQL 구문 문법 오류,매개 변수 수량 오류 등 이 있 습 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
NotSupportedError
오류 가 지원 되 지 않 습 니 다.데이터베이스 에서 지원 되 지 않 는 함수 나 API 등 을 사 용 했 습 니 다.예 를 들 어 연결 대상 에 rollback()함 수 를 사용 하지만 데이터 베 이 스 는 트 랜 잭 션 이나 트 랜 잭 션 이 닫 혔 습 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.