pundit
pundit

Reputation: 187

SELECT statement is MySql returning wrong value using python

I am trying to retrieve a value from a table stored in Mysql database using python(pycharm). But instead of outputting the stored value it outputs number of rows instead.

import pymysql
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='passw',
                             database='database1',
                             charset='utf8',
                             port=3306
                             )
x=connection.cursor()
select = x.execute('''SELECT
    update_id
FROM
    telegram;
''')
print(select)

Output: 1 

^Wrong output(Output equals number of rows). As I keep adding on rows the output changes to the number of rows but never returns the value stored.

The command works from MySql perfectly.

SELECT
        update_id
    FROM
        telegram;
Output:233

^This is the correct output. Why is this happening? What changes should I make in my python code?

Upvotes: 1

Views: 470

Answers (2)

Steve
Steve

Reputation: 716

According to the documentation, cursor.execute() returns the number of affected rows. You then need to fetch the content with fetch() or fetchall(). See the example at PyMySQL.

Upvotes: 0

Akib Rhast
Akib Rhast

Reputation: 671

According to the documentation on pymysql, this is how you are supposed to do the print out:

    sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
    cursor.execute(sql, ('[email protected]',))
    result = cursor.fetchone()
    print(result)

enter image description here

You are missing "cursor.fetchone()"

I hope that helps

Upvotes: 1

Related Questions