【bug】pymysql.err.OperationalError: (1046, ‘No database selected‘)

发布于:2024-12-08 ⋅ 阅读:(120) ⋅ 点赞:(0)

【bug】pymysql.err.OperationalError: (1046, ‘No database selected’)

环境

PyMySQL                 1.1.1

问题详情

在使用pymysql查询数据出现的错误。

import pymysql

def query_data(name):
    """查询所有name 等于name的数据"""
    connection = pymysql.connect(host='localhost',port=3306,user='root',password='123456',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
    cursor = connection.cursor()
    sql = "SELECT * FROM test WHERE name = %s"
    cursor.execute(sql, (name,))
    result = cursor.fetchall()
    connection.close()
    return result

if __name__ == '__main__':
    result = query_data("Jane")
    print(result)

错误原因是pymysql.connect连接数据库时并没有连接到具体的数据库。

解决方法

方法1:先连接到总数据库,再连接具体数据库

connection = pymysql.connect(host='localhost',port=3306,user='root',password='123456',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
connection.select_db("test")  # 连接到具体数据库

方法2:一步到位,连接到具体数据库

connection = pymysql.connect(
      host='localhost',
      port=3306,
      user='root',
      password='123456',
      charset='utf8mb4',
      database='test',   # 具体数据库名称
      cursorclass=pymysql.cursors.DictCursor,
  )

参考

填坑记2:pymysql报错提示:pymysql.err.OperationalError: (1046, ‘No database selected‘)_pymysql.err.operationalerror: (1046, 'no database -CSDN博客