MelRanG
614
2021-03-10 22:17:23
2
88

pymysql count 리턴 질문입니다.


pymysql에서 SELECT count(*) FROM message_info의 리턴값을 가지고 오고 싶습니다.


def __init__(self, host, id, pw, db_name):
self.conn = pymysql.connect(host=host, user=id, password=pw, db=db_name, charset='utf8mb4')
self.curs = self.conn.cursor()


def selectMessageCount(self):
sql = 'SELECT count(*) FROM message_info'
self.curs.execute(sql)


클래스와 함수를 이렇게 선언한 후 구글링을 해보니

self.curs.rowcount를 하라는 답변과

fetchone()을 한 후 [0]번 인덱스를 가져오라는 답변과

import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb

이렇게 MySQLdb를 사용하라는 답변을 받았습니다.


세 답변 모두 실행해봤는데

def test_delete(self):
count = self.controller.selectMessageCount
print("count: ", count)
while count > 4:
self.controller.deleteMessage
count = self.controller.selectMessageCount
print(count)

저기서 count값이 인트가 아닌 오브젝트로 나오고

count:  <bound method MysqlController.selectMessageCount of <python.BookDb.MysqlController object at 0x000002780BB93748>>

 

'>' not supported between instances of 'method' and 'int'

이런 에러가 뜹니다.


왜 이러는 건가요...??

0
  • 답변 2

  • WRITE_IN_DART✎
    2021-03-10 22:38:50

    해당 부분은 모르는 부분이라 추측이긴 합니다만,selectMessageCount는 함수니

    count = self.controller.selectMessageCount

    이 아닌

    count = self.controller.selectMessageCount()

    이 아닐까 싶습니다.


  • MelRanG
    614
    2021-03-11 09:46:17

    worldoftanks남자의게임

    기초적인 부분이 문제였군요... 저걸 놓치다니 ㅠㅠ 감사합니다!!

    함수 선언하고 rowcount가 아닌 fetchone을 사용해서 해결했습니다!

  • 로그인을 하시면 답변을 등록할 수 있습니다.