Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决;属性错误:';功能';对象没有属性';光标'&引用;当尝试连接到数据库时?_Python - Fatal编程技术网

Python 如何解决;属性错误:';功能';对象没有属性';光标'&引用;当尝试连接到数据库时?

Python 如何解决;属性错误:';功能';对象没有属性';光标'&引用;当尝试连接到数据库时?,python,Python,我正在尝试使用MySQLdb库连接到MySQL数据库。我收到一条错误消息,该函数没有游标属性 我试着一行一行地运行连接代码,但没有将其包装到解释器中的函数中,它可以正常工作 导入MySQLdb 将databaseconfig导入为dcfg #databaseconfig.py包含数据库凭据 #它是一个配置文件,没有代码 def mysqlconnect(): #尝试连接 db_连接=无 尝试: db_connection=MySQLdb.connect ( dcfg.mysql[“主机”], d

我正在尝试使用MySQLdb库连接到MySQL数据库。我收到一条错误消息,该函数没有游标属性

我试着一行一行地运行连接代码,但没有将其包装到解释器中的函数中,它可以正常工作

导入MySQLdb
将databaseconfig导入为dcfg
#databaseconfig.py包含数据库凭据
#它是一个配置文件,没有代码
def mysqlconnect():
#尝试连接
db_连接=无
尝试:
db_connection=MySQLdb.connect
(
dcfg.mysql[“主机”],
dcfg.mysql[“用户”],
dcfg.mysql[“密码”],
dcfg.mysql[“db”],
dcfg.mysql[“端口”]
)
#如果连接不成功
除:
打印(“无法连接到数据库”)
返回0
#如果连接成功
打印(“连接”)
#为查询执行创建游标对象
cursor=db_connection.cursor()
#连接到数据库的函数调用
mysqlconnect()
预期的输出是生成一个游标。 实际产出为:

Connected
Traceback (most recent call last):
  File "models.py", line 43, in <module>
    mysqlconnect()
  File "models.py", line 26, in mysqlconnect
    cursor = db_connection.cursor()
AttributeError: 'function' object has no attribute 'cursor'
已连接
回溯(最近一次呼叫最后一次):
文件“models.py”,第43行,在
mysqlconnect()
mysqlconnect中第26行的文件“models.py”
cursor=db_connection.cursor()
AttributeError:“函数”对象没有属性“游标”

这是因为您的语法。您的
mysqlconnect
函数应该如下所示:

def mysqlconnect():
    # Trying to connect
    db_connection = None
    try:
        db_connection = MySQLdb.connect(
            dcfg.mysql["host"],
            dcfg.mysql["user"],
            dcfg.mysql["password"],
            dcfg.mysql["db"],
            dcfg.mysql["port"]
        )
    # If connection is not successful
    except:
        print("Can't connect to database")
        return 0
    # If Connection Is Successful
    print("Connected")

    # Making Cursor Object For Query Execution
    cursor = db_connection.cursor()


db_connection=MySQLdb.connect
是一个完整的语句,它将函数本身分配给调用该函数的结果。您需要将参数列表的左括号移到同一行,以便Python将扩展语句,直到匹配的右括号为止。(实际上,参数列表被解析为元组结构,然后被丢弃。)