Python/MySqlDB - 使用 raw_input 查询数据库并打印结果

Python/MySqlDB - Query a database using raw_input and print the result

我正在尝试创建一个函数,该函数将使用通过 raw_input 插入的字符串(或字符串的一部分)查询数据库。
数据库 PManDB 只有一个 table ( accounts ) 有 3 列 ( website, username, password ).
示例:如果在列 website 中我有字符串 'www.website.com' 我想获得它插入值 'w''web''com'raw_input.

项目的完整代码是here
下面是没有打印数据库功能的摘录:

def SearchRecords(self):
            search = raw_input("Insert value to be searched in the DB:")
            db = MySQLdb.connect("localhost", "root", "pass", "PManDB")
            cursor = db.cursor()
            sql = """SELECT * FROM accounts WHERE website LIKE %s"""
            data = (search)
            try:
                # Execute the SQL command
                cursor.execute(sql, data)
                print "The research has been made with success"
            except:
                # Rollback in case there is any error
                print "There is an error"
                db.rollback()
            # disconnect from server

想法是在 print 语句 "The research has been made with success" 之后添加一个 cursor.fetchall() 使用以下语法

result = cursor.fetchall()
print result

或者添加一个for循环

result = cursor.fetchall()
for row in result:
  print row[0] 

但是代码在这两种情况下都不起作用。

你能帮我理解我错在哪里以及为什么吗?

EDIT1:根据mata评论,我添加了错误。
当我在PyCharm启动应用程序时,引入mata提出的修改,我收到以下错误

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

更新后的代码如下(仍然无法解决上述错误):

    def SearchRecords(self):
    search = raw_input("Insert value to be searched in the DB:")
    db = MySQLdb.connect("localhost", "root", "studio", "PManDB")
    cursor = db.cursor()
    sql = """SELECT * FROM accounts WHERE website LIKE %s"""
    data = ('%' + search + '%',)
    cursor.execute(sql, data)
    result = cursor.fetchall()
    print result

解决了删除函数末尾的 db.close 和 db.commit 的问题。