【问题标题】:python mysql: connection cursor has no execute attributepython mysql:连接游标没有执行属性
【发布时间】:2018-07-24 12:56:27
【问题描述】:

在尝试一些 mysql voodoo 时,会弹出以下错误。我读 这里的其他问题和建议是使用光标进行连接,我已经完成了恕我直言。那么这里有什么问题呢?

#!/usr/bin/env python

    import os
    import sys
    import MySQLdb as db
    try:
        import json
        from json import JSONDecodeError
    except ImportError:
        import simplejson as json
        from simplejson import JSONDecodeError

    connections = {
        'conn1': db.connect('nimmsag_a', 'aix_regread', 'cmdbuser', 'aix_registry'),
        'conn2': db.connect('localhost', 'ansible', 'ansible', 'ansible_inv')
    }

    connections['conn1'].cursor.execute('SELECT * FROM TABLES;')
    connections['conn2'].cursor.execute('SELECT * FROM TABLES;')

    [conn.close() for key, conn in connections.items()]

root@lpgaixmgmtlx01:/root>./reg2inv.py
Traceback (most recent call last):
  File "./reg2inv.py", line 18, in <module>
    connections['conn1'].cursor.execute('SELECT * FROM TABLES;')
AttributeError: 'function' object has no attribute 'execute'

【问题讨论】:

    标签: python mysql-python


    【解决方案1】:

    As documented - 并在回溯中以所有字母拼写 - connection.cursor 是一个返回 Cursor 对象的函数。您必须首先通过调用connection.cursor() 获取光标,然后执行您的查询:

    c1 = connections['conn1'].cursor()
    c1.execute('SELECT * FROM TABLES')
    

    【讨论】:

    • connections['conn1'].cursor().execute('SELECT * FROM nodes;') connections['conn2'].cursor().execute('SELECT * FROM host;')似乎工作
    • 通常你想在光标上保留一个引用,这样你就可以得到你的查询结果;)
    猜你喜欢
    • 2019-02-23
    • 1970-01-01
    • 2015-03-08
    • 2014-07-26
    • 1970-01-01
    • 2023-01-30
    • 2019-05-05
    • 2019-10-16
    • 2014-05-20
    相关资源
    最近更新 更多