遇到2个问题,希望老师能帮忙解决

来源:3-3 python查询mysql数据库

冰红茶煮蛋

2018-07-10

第一个问题,3.3 .自己按着老师上课的代码 想一步步的运行尝试加深记忆,结果在第一步get_one时 运行后无结果,也无报错,如图http://img.mukewang.com/szimg/5b444d49000116ab08320721.jpg

import MySQLdb

class Mysqlsearch(object):
    def __init__(self):
        self.get_conn()
    # 获取连接
    def get_conn(self):
        try:
            self.conn = MySQLdb.connect(
                host = '127.0.0.1',
                user = 'root',
                passwd = "",
                db = "news",
                port = 3306,
                charset = 'utf8'
            )
        except MySQLdb.Error as e:
             print ("Error: %s" % e)
    # 关闭连接
    def close_conn(self):
        try:
            if self.conn:
                self.conn.close()
        except MySQLdb.Error as e:
             print ("Error: %s" % e)
    # 查询一条数据
    def get_one(self):
        # 准备SQL
        sql = "SELECT * FROM `news` WHERE `types` = %s ORDER BY `created_at` DESC;"
        # 找到cursor
        cursor = self.conn.cursor()
        # 执行SQL
        cursor.execute(sql, ('百家', ))
        # 拿到结果
        rest = cursor.fetchone()
        # 处理数据
        print (rest)
        # 关闭cursor/连接
        cursor.close()
        self.conn.close()



def main():
    obj = Mysqlsearch()
    obj.get_conn()

if __name__ == "__main__":
    main()

以上为第一个问题代码,第二个问题则是直接复制了老师的课程代码,结果报这个错误:http://img.mukewang.com/szimg/5b444e0400010fc608920725.jpg

import MySQLdb

class MysqlSearch(object):

   def __init__(self):
       self.get_conn()

   def get_conn(self):
       try:
           self.conn = MySQLdb.connect(
               host='127.0.0.1',
               user='root',
               passwd='',
               db='news',
               port=3308,
               charset='utf8'
           )
       except MySQLdb.Error as e:
           print('Error: %s' % e)

   def close_conn(self):
       try:
           if self.conn:
               # 关闭链接
               self.conn.close()
       except MySQLdb.Error as e:
           print('Error: %s' % e)

   def get_one(self):
       # 准备SQL
       sql = 'SELECT * FROM `news` WHERE `types` = %s ORDER BY `created_at` DESC;'
       # 找到cursor
       cursor = self.conn.cursor()
       # 执行SQL
       cursor.execute(sql, ('百家', ))
       # print(dir(cursor))
       # 拿到结果
       rest = dict(zip([k[0] for k in cursor.description], cursor.fetchone()))
       # 处理数据
       # 关闭cursor/链接
       cursor.close()
       self.close_conn()
       return rest

def main():
   obj = MysqlSearch()
   obj.get_conn()


if __name__ == '__main__':
   main()

这是第二个的代码

写回答

1回答

NavCat

2018-07-10

问题一:你要试着去理解代码,在你的第一份代码46行,应该是 get_one()

问题二:老师的数据库和你装的端口不一样,我用的是3308,你的是3306,注意区别。

0
1
冰红茶煮蛋
非常感谢!
2018-07-10
共1条回复

Python操作三大主流数据库-MySQL+MongoDB+Redis

一次实战同时掌握Python操作MySQL,MongoDB,Redis 三大数据库使用技巧

2024 学习 · 376 问题

查看课程