qq_51681912 2021-11-30 20:27 采纳率: 100%
浏览 934
已结题

'str' object has no attribute 'cursor' 连接数据库出错 object supporting the buffer API required

在pycharm运行程序的时候调用数据库报错

**问题相关代码:
**

def get_user_items(table_name):
    sql = 'select `用户`,`索引` from %s'%table_name
    result = select_data(sql)
    data = {}
    for i in result:
        data.setdefault(str(i['用户']),[])
        data[str(i['用户'])].append(str(i['索引']))
    # print(data)
    return dict(data)

然后调用select函数,这个函数写在另一个文件里,如下

def select_data(sql):
    db = connect_db()
    cursor = db.cursor()
    cursor.execute(sql)
    result = cursor.fetchall()
    db.commit()
    db.close()
    desp_list = [i[0] for i in cursor.description]  # 获取字段列表
    data = []
    for i in result:
        data.append(dict(zip(desp_list,i)))
    return data
运行结果及报错内容

Traceback (most recent call last):
  File "C:/Users/86181/Desktop/trip-main/trip-python/utils/action.py", line 53, in <module>
    artical_item_base_data = get_item_base_data('artical_action')
  File "C:/Users/86181/Desktop/trip-main/trip-python/utils/action.py", line 22, in get_item_base_data
    pre_data = get_user_items(table_name)
  File "C:/Users/86181/Desktop/trip-main/trip-python/utils/action.py", line 9, in get_user_items
    result = select_data(sql)
  File "C:\Users\86181\Desktop\trip-main\trip-python\utils\dbutils.py", line 28, in select_data
    cursor = db.cursor()
AttributeError: 'str' object has no attribute 'cursor'
连接数据库出错
object supporting the buffer API required

进程已结束,退出代码为 1

我的解答思路和尝试过的方法

本地数据库已经连接上了,但是跑到这里就会突然报错,本人猜测可能是数据库内表的参数设置的不匹配。但是为什么是游标报错呢?

我想要达到的结果

刚学数据库和python不久,求答主指导细一点谢谢啦

  • 写回答

3条回答 默认 最新

  • CSDN专家-HGJ 2021-11-30 22:00
    关注

    db = connect_db()这里调用的函数返回是一个字符串类型数据,无法创建游标对象。db应该是一个数据库连接对象,类似于:

    db = pymysql.connect(host='localhost',user='root',db='huangwei',
                         password='123456',port=3306,charset='utf8')
    #or
    db=sqlite3.connect(数据库文件)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 创建了问题 11月30日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题