> 백엔드 개발 > 파이썬 튜토리얼 > Python 데이터베이스 프로그래밍

Python 데이터베이스 프로그래밍

高洛峰
풀어 주다: 2016-11-19 10:03:21
원래의
1322명이 탐색했습니다.

Python이 데이터베이스를 작동하고 간단한 추가, 삭제, 수정 및 검색을 완료하는 방법을 MySQL 데이터베이스를 예로 들어 설명합니다.

Python의 MySQL 데이터베이스 운영 모듈은 MySQLdb라고 하며 추가 설치가 필요합니다.

pip 도구를 통해 설치: pip install MySQLdb

MySQLdb 모듈에서는 주로 MySQLdb.Connect() 데이터베이스에 연결하는 방법을 사용합니다. 해당 작업을 수행하십시오.

MySQLdb.Connect(parameters...) 메서드는 일반적으로 사용되는 다음과 같은 매개 변수를 제공합니다.

Python 데이터베이스 프로그래밍

연결 개체가 반환하는 connect() 함수:

Python 데이터베이스 프로그래밍

커서 개체는 여러 메서드도 제공합니다.

Python 데이터베이스 프로그래밍

13.1 데이터베이스 추가, 삭제, 수정 및 쿼리

13.1.1 테스트 라이브러리에 사용자 테이블을 생성하고 레코드를 추가합니다

>>> conn = MySQLdb.Connect(host='192.168.1.244',user='root',passwd='QHyCTajI',db='test',charset='utf8')
>>> cursor = conn.cursor()
>>> sql = "create table user(id int,name varchar(30),password varchar(30))"
>>> cursor.execute(sql)   # 返回的数字是影响的行数
0L    
>>> sql = "insert into user(id,name,password) values('1','xiaoming','123456')"
>>> cursor.execute(sql)
1L
>>> conn.commit()  # 提交事务,写入到数据库
>>> cursor.execute('show tables')  # 查看创建的表
1L
>>> cursor.fetchall()  # 返回上一个游标执行的所有结果,默认是以元组形式返回
((u'user',),)
>>> cursor.execute('select * from user')           
1L
>>> cursor.fetchall()
((1L, u'xiaoming', u'123456'),)
로그인 후 복사

13.1.2 여러 데이터 조각 삽입

>>> sql = 'insert into user(id,name,password) values(%s,%s,%s)'
>>> args = [('2','zhangsan','123456'), ('3','lisi','123456'),('4','wangwu','123456')] 
>>> cursor.executemany(sql, args)
3L
>>> conn.commit()
>>> sql = 'select * from user'
>>> cursor.execute(sql)
4L
>>> cursor.fetchall()
((1L, u'xiaoming', u'123456'), (2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))
로그인 후 복사

args 변수는 목록입니다. 튜플을 포함하며, 각 튜플은 각 레코드에 해당합니다. 여러 레코드를 쿼리할 때 이 방법을 사용하면 삽입 효율성을 효과적으로 향상시킬 수 있습니다.

13.1.3 사용자 이름 Xiaoming의 기록 삭제

>>> sql = 'delete from user where name="xiaoming"'
>>> cursor.execute(sql)                           
1L
>>> conn.commit()
>>> sql = 'select * from user'                   
>>> cursor.execute(sql)       
3L
>>> cursor.fetchall()         
((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))
로그인 후 복사

13.1.4 기록 조회

>>> sql = 'select * from user' 
>>> cursor.execute(sql)         
3L
>>> cursor.fetchone()   # 获取第一条记录
(2L, u'zhangsan', u'123456')
>>> sql = 'select * from user' 
>>> cursor.execute(sql)         
3L
>>> cursor.fetchmany(2) # 获取两条记录
((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'))
로그인 후 복사

13.1.4 결과를 사전 형식으로 반환

默认显示是元组形式,要想返回字典形式,使得更易处理,就用到cursor([cursorclass])中的cusorclass参数。
传入MySQLdb.cursors.DictCursor类:
>>> cursor = conn.cursor(MySQLdb.cursors.DictCursor)
>>> sql = 'select * from user'
>>> cursor.execute(sql)
3L
>>> cursor.fetchall()
({'password': u'123456', 'id': 2L, 'name': u'zhangsan'}, {'password': u'123456', 'id': 3L, 'name': u'lisi'}, {'password': u'123456', 'id': 4L, 'name': u'wangwu'})
로그인 후 복사

13.2 쿼리 결과 탐색

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb
try:
    conn = MySQLdb.Connect(host='127.0.0.1', port=3306, user='root', passwd='123456', connect_timeout=3, charset='utf8')
    cursor = conn.cursor()
    sql = "select * from user"
    cursor.execute(sql)
    for i in cursor.fetchall():
        print i
except Exception, e:
    print ("Connection Error: " + str(e))
finally:
    conn.close()
     
# python test.py
(2L, u'zhangsan', u'123456')
(3L, u'lisi', u'123456')
(4L, u'wangwu', u'123456')
로그인 후 복사

for 루프를 사용하여 쿼리 결과를 탐색하고 예외 처리를 추가합니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿