Python操作MySQL报错:'NoneType'对象无'cursor'属性求助
解决AttributeError: 'NoneType' object has no attribute 'cursor'错误
错误本质
你传进create_database函数的connection变量是None——也就是说你根本没建立有效的数据库连接,就直接把这个空变量传进去调用cursor()方法了,自然会触发错误。
解决步骤
先实现有效的数据库连接逻辑
你需要通过对应数据库的驱动(比如MySQL用mysql-connector-python,PostgreSQL用psycopg2)建立真实连接,以下是MySQL的示例代码:import mysql.connector from mysql.connector import Error # 创建基础连接(不指定具体数据库) def create_base_connection(host, user, password): conn = None try: conn = mysql.connector.connect( host=host, user=user, password=password ) print("基础连接建立成功") except Error as e: print(f"连接失败: {e}") return conn # 替换成你的数据库账户信息 connection = create_base_connection("localhost", "root", "your_db_password")若使用其他数据库,只需替换对应的连接代码即可(比如PostgreSQL用
psycopg2.connect())。调用创建数据库函数前校验连接有效性
在调用create_database前,先判断connection是否不为空,避免无效调用:create_database_query = "Create Database Donations" if connection is not None: create_database(connection, create_database_query) else: print("无法创建数据库:连接无效")操作新数据库需重新连接指定库
创建完Donations数据库后,若要操作该库,需要重新建立指向该库的连接:def create_db_connection(host, user, password, db_name): conn = None try: conn = mysql.connector.connect( host=host, user=user, password=password, database=db_name ) print(f"已连接到 {db_name} 数据库") except Error as e: print(f"连接失败: {e}") return conn # 后续操作Donations库时使用这个连接 db_connection = create_db_connection("localhost", "root", "your_db_password", "Donations")
原代码问题点
你原代码直接使用了connection变量,但没有任何代码初始化该变量并建立真实连接,导致它默认是None,调用connection.cursor()时触发错误。
内容的提问来源于stack exchange,提问作者brownie8fire8
相关产品推荐
相关产品推荐

