'mysql'에 해당하는 글 2건

Google App Engine(이하 gae) 사용시 local mysql 연동에 문제가 좀 있더군요. 이리 저리 자료를 찾아서 정리를 했습니다.

파일다운로드 URL :
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

app.yaml 추가

libraries:

- name: MySQLdb
  version: "latest"

샘플 소스

import MySQLdb

CLOUDSQL_INSTANCE = '127.0.0.1' #localhost라고 하면 연결이 안되네요
DATABASE_NAME = 'database'
USER_NAME = 'root'
PASSWORD = '비밀번호'

def get_connection():
    kwargs = {
              'db': DATABASE_NAME,
              'user': USER_NAME,
              'passwd': PASSWORD,
              'port': 3306,
              'charset': 'utf8' #없으면 한글이 깨집니다.
              }

    return MySQLdb.connect(CLOUDSQL_INSTANCE, **kwargs)

class DbHandler(BaseHandler):
    def get(self):
        # Viewing guestbook
        conn = get_connection()
        cursor = conn.cursor()
        cursor.execute('SELECT idx, code, level FROM user_group '
                       'ORDER BY created_at DESC limit 20')
        rows = cursor.fetchall()
        conn.close()
        template_values = {"rows": rows}
        self.templates('test/test.html', **template_values);


app = webapp2.WSGIApplication([
    ('/db', DbHandler),
], debug=True)


신고

WRITTEN BY
비트센스
뷰파인더로 보는 프로그래머의 세상 페이스북 @bitsense 트위터 @picory 스카이프 picory MSN drawhalf@dreamwiz.com

받은 트랙백이 없고 , 댓글이 없습니다.
secret
MySQL 이 성능이 좋기는 하지만,
어느 프로그램이 그렇듯이 문제는 다 있기 마련이다.

MySQL의 경우에도 자주는 아니지만, LOCK이 걸릴 경우,
모든 프로세스(select, update, delete)가 멈추어 버리게 된다.
정확히 말하면 멈춘다기 보다는, LOCK 걸린 프로세스가 
끝나기를 바라면서? 순번을 들고 대기 중이다.

이럴 경우 답답해 진다. top을 해도 CPU는 놀고 있으니,
결국 mysql 에 접속해서 보는 수 밖에 없다.

mysql>show processlist;
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
| Id | User  | Host      | db | Command | Time | State        | Info                                |
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
| 6  | monty | localhost | bp | Query   | 15   | Sending data | select * from station,station as s1 |
| 8  | monty | localhost |    | Query   | 0    |              | show processlist                    |
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
LOCK이 걸린 Id를 가차없이 Kill을 하면 된다.
mysql>kill 6;
간혹 실제 동작 중인 프로세스를 죽이는 경우도 있으니,
조금만 더 신중하게 처리해 주시길~~ ^^;;
신고

WRITTEN BY
비트센스
뷰파인더로 보는 프로그래머의 세상 페이스북 @bitsense 트위터 @picory 스카이프 picory MSN drawhalf@dreamwiz.com

트랙백  58 , 댓글이 없습니다.
secret