본문 바로가기

엔지니어/Python

python 으로 mysql 를 접근할때

728x90
반응형
python 으로 mysql 를 접근할때
 
>>> db = MySQLdb.connect(host=dbcon['host'],user=dbcon['user'],passwd=dbcon['passwd'],db=dbcon['db'])
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/site-packages/MySQLdb/__init__.py", line 75, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 164, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
</stdin>
 
 
메시지를 출력하면서 작동 안됨
 
핵심은 mysql.sock 을 찾을 수 없다는 것인데 이럴땐
 
>>> db = MySQLdb.connect(host=dbcon['host'],user=dbcon['user'],passwd=dbcon['passwd'],db=dbcon['db'],unix_socket="/tmp/mysql.sock")
 
로 연결해주면 해결. unix_socket 에 sock 위치를 지정해준다. /etc/my.cnf 에 나와있음
 
 
 
# SQL 문 실행, 여러행을 넣을 수도 있고,
 
cursor.execute('''
 
SQL 문장;
 
''')
 
 
 
 
# 또는 select 구문을 한 행으로 실행
 
cursor.execute('select ....;')
 
 
 
 
# 결과 행수를 알아보기
 
cursor.rowcount
 
 
 
 
# 각 필드 특징 알아보기 (필드명,데이터형_코드, 표시크기, 내부크기, 정확도, 비율, nullable)
 
cursor.description
 
 
 
 
# 결과를 하나씩 가져오기, 더이상 레코드 없으면 None
 
# 결과값은 튜플로 반환
 
cursor.fetchone()
 
# n 개의 결과. 튜플의 튜플
 
curor.fetchmany(n)
 
# 결과 전체, 만약 이전에 다른 fetch문이 있었다면 남은 결과의 전체
 
# 튜플의 튜플
 
cursor.fetchall()
 
 
 
 
# 결과들을 하나씩 보는 방법
 
recs = cursor.fetchall()
 
for rec in recs:
 
print rec
 
 
 
 
# 튜플이 아닌 사전 형식으로 필드 가져오기
 
cursor = db.cursor(MySQLdb.cursors.DictCursor)
 
# 위 형태로 커서를 가져오면 fetch*() 메소드 실행 결과가 필드명을 키로 한 사전이다.
 
 
 
#데이터베이스 커밋 및 롤백
 
db.commit()
 
db.rollback()
 
 
반응형

'엔지니어 > Python' 카테고리의 다른 글

python html 파싱 2  (0) 2022.10.28
python html 파싱  (0) 2022.10.28
Grumpy: Go running Python  (0) 2017.01.11
parsing  (0) 2016.05.26
python source install  (0) 2016.05.26