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 |