mysqldb ..“NoneType”对象不可下标

2023-11-30

这段代码在以下情况下工作正常cur.execute() and db.commit()行被注释掉;即,如果我所做的只是打印查询,则该程序将运行 n 行。问题似乎出现在这里:

player_categories_statistics = cur.fetchone()
player_id = player_categories_statistics[0]

当我尝试插入结果时,我得到:

Traceback (most recent call last):
  File "test2.py", line 72, in <module>
    meat = meatgrind(league_name, categories_measurement_statistics)
  File "test2.py", line 32, in meatgrind
    player_id = int(player_categories_statistics[0])
TypeError: 'NoneType' object is not subscriptable

代码:

import sys 
import MySQLdb
import string 

db = MySQLdb.connect()
cur = db.cursor('localhost','me',XXXXX,'testdb')


def meatgrind(league_name,categories_measurement_statistics):
# a varied range of different categories can be used 

    # 1. list categories
    categories = []
    categories_string = "player_id"
    categories_string_newtable = "meatgrinded_player_id, player_id"
    for category in categories_measurement_statistics:
        categories_string += ", " + category[0]
        categories_string_newtable += ", " + category[0]


    # 2. get players and statistics
    query = "SELECT %s FROM players" % (categories_string)
    cur.execute("%s" % (query))
    # rowcount = int(cur.rowcount)
    rowcount = 2 #hard-coded for debugging

    # 3. meatgrind one player at a time
    meatgrinded_player_id = 1
    for i in range(rowcount):
        player_categories_statistics = cur.fetchone()
        player_id = player_categories_statistics[0]

        #4. grind a category statistic
        meatgrindings_string = "%d, %d" % (meatgrinded_player_id, player_id)

        index = 1
        for category in categories_measurement_statistics:

            # SOME MATH HERE resulting in player_meatgrindings

            meatgrindings_string += ", %0.4f" % player_meatgrindings



query = """INSERT INTO sometable (%s) VALUES (%s)""" % (categories_string_newtable, meatgrindings_string)
cur.execute("%s" % (query))
db.commit()

meatgrinded_player_id += 1


league_name = 'test'
categories_measurement_statistics = (('H', 156.3, 19.643093216474604), ('HR', 21.3, 9.003147597738618), ('SB', 13.25, 16.041179646286754))

meat = meatgrind(league_name, categories_measurement_statistics)

您的错误原因是:

player_categories_statistics = cur.fetchone()

这一套player_categories_statistics to None. None[0]引发异常。

发生这种情况的唯一原因是您的查询没有返回行,这意味着您的表是空的。您的表很可能是空的,因为您从未在其中放入任何行,或者不太可能以某种方式删除它们。

我是罪魁祸首may如下,您要插入sometable并从中选择players:

INSERT INTO sometable (%s) VALUES (%s)

vs

SELECT %s FROM players

出现这种情况的唯一原因是因为您强制它循环,即使该行没有返回任何内容:

rowcount = 2 #hard-coded for debugging

附加信息:

这是我在 sqlite3 数据库上运行的一个工作查询,其中有一个表,其中有一行,其语句与您的语句几乎相同,只是为了表明如果数据确实存在,您的查询应该可以工作。

query = "SELECT %s FROM customer" % 'first_name, last_name'

row = c.execute("%s" % (query)).fetchone()

row
Out[28]: (u'Derek', u'Litz')

这是 sqlite3 数据库上的另一个有效查询,其中包含另一个表,但没有行。

query = "SELECT %s FROM customer2" % 'first_name, last_name'

print c.execute("%s" % (query)).fetchone()
None

正如您所看到的,与上面的行为相同。

还要确保行计数按照您希望的方式与数据库配合使用。例如,它不适用于 sqlite3。请参阅行计数规范http://www.python.org/dev/peps/pep-0249/#cursor_objects并查阅 MySQLdb 文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysqldb ..“NoneType”对象不可下标 的相关文章

随机推荐

  • 显示应用程序端点的照片

    这是我的问题 我在一个大型 UCMA 项目上工作了 3 个月 现在我想添加一个小功能 我有很多可以动态添加 修改或删除的 ApplicationEndpoint 我希望每次创建 ApplicationEndpoint 时都指定将在 Micr
  • 位图、Bitmap.recycle()、弱引用和垃圾回收

    据我所知 在 Android 上 建议将 Bitmap 对象作为 WeakReferences 引用 以避免内存泄漏 当位图对象不再保留硬引用时 垃圾收集器将自动收集它 现在 如果我理解正确的话 必须始终调用 Bitmap recycle
  • C++ SDL 的作用是什么?做?

    screen SDL SetVideoMode 1000 1000 32 SDL HWSURFACE SDL FULLSCREEN 什么是 do in SDL HWSURFACE SDL FULLSCREEN 我尝试谷歌搜索 但谷歌不接受特
  • 画布渐变表现

    我目前正在使用画布编写一个小游戏 对于游戏 我需要某种雾来隐藏地图的大部分 并且只有玩家周围的一小部分区域应该可见 为此 我使用第二个画布覆盖游戏发生的画布 并用渐变填充它 从透明到黑色 function drawFog fogc clea
  • 连接到 firestore 模拟器时 Python firebase_admin 挂起

    我无法从 python 连接到 firestore 模拟器 连接并写入文档到真实项目工作正常 但是在设置环境时 设置函数永远不会解析变量 FIRESTORE EMULATOR HOST 代码 os environ FIRESTORE EMU
  • 如何在 Python OpenCV 中保存视频

    我已经使用 CV2 打开了一个视频 使用进行了一些更改cv2 rectangle 现在 当我这样做时cv2 imshow frame frame 它会播放视频 相反 我想以原始大小和帧速率将视频保存在某处 您可以逐帧保存视频 基于文档上的示
  • 返回在 javascript 对象中找不到的键的默认值

    当调用不在对象中的键时 将返回 undefined 我想返回一个我指定的字符串而不是未定义的字符串 例如 let obj key1 key1 let res obj key2 console log res I want console l
  • 如何在 Angularjs 中创建过滤器?

    我有这个课程集合 id 1 courseId 2 text John id 2 courseId 2 text Willi id 3 courseId 2 text Inga id 4 courseId 1 text Jerry id 5
  • 如何用 VI/VIM 编辑器中每次出现的不同单词替换查找单词?

    例如 我有一个文本 10 3 4 2 10 4 10 不 我想用不同的单词更改每 10 个 我知道 s 10 replace words gc 但它只让我像 yes no 一样进行交互式替换 但我想用不同的单词来更改 10 的每次出现 例如
  • 具有背景颜色的粗体文本样式的 Excel 行的 Java 代码

    我用谷歌搜索了一些代码并找到了一些答案 但无法以粗体形式获取 Excel 文件输出并设置背景颜色 我尝试过以下代码 你能告诉我哪里错了吗 请看一下 谢谢 仅供参考 我将用蓝色或任何浅色以粗体显示第一行 背景 如果你知道请帮忙看一下代码 Ex
  • 为什么在子类化 tf.keras 层(或模型)类时实现“call”方法使层(模型)对象可调用?

    当编写自定义的 tf keras 层时 我们必须实现 call 方法 因为只有 如果对象具有有效的 则可以像使用 的函数一样调用类的对象 call 方法 虽然我没有找到类似的东西 class tf keras model def call
  • Chrome 忽略从 WebAPI 控制器发送的 HttpResponse 的 Content-Disposition 标头中建议的扩展名

    我正在尝试编写一个 WebAPI 控制器 它可以动态生成 W indows 快捷方式文件 lnk 并将其发送回客户端 但即使我在 Content Disposition 标头中指定 lnk 作为扩展名构建响应时 Chrome 仍会在 另存为
  • Spring Boot yaml 文件中数字类型的 @Value

    I got a data yml在以下结构的资源文件夹中 main header info 3600L 我使用Spring Boot版本2 4 2 我想注入属性main header1 info对于一个字段 我按以下方式执行此操作 Comp
  • 如何查找包含 的存储过程?

    我需要在 SQL Server 2008 中搜索存储过程 其中可能包含 数据库字段的名称或变量名称 SELECT ROUTINE NAME ROUTINE DEFINITION FROM INFORMATION SCHEMA ROUTINE
  • IE浏览器中的JQuery选择框焦点问题

    下面的 input 与标签匹配 该代码在所有浏览器中都可以正常工作 除了在 Internet Explorer 中 我需要单击选择框两次才能获得下拉列表 input focus function var rc this parents rc
  • 如何将密钥信息保留在 Git 存储库之外

    我的存储库中有一些文件 其中一个包含 Adafruit 秘密密钥 我想使用 Git 来存储我的存储库 但我不想发布密钥 保守秘密的最佳方法是什么 而不必每次提交和推动某件事时都将其清空 根据您想要实现的目标 您可以选择以下方法之一 将文件保
  • 使用 d3.js 在强制布局中添加和删除节点时出现问题

    我试图通过从 Zabbix API 获取数据来可视化服务器可用性 以及随后的其他事情 一旦可行 您可以在 Zabbix API 文档中的 此处 1 中查看有关返回数据的示例 获取数据不是问题 但我认为 d3 js 的数据连接遇到了一些问题
  • 为什么 SQL 查询的结果没有按照我期望的顺序返回?

    如果将项目插入表中 然后我编写一个查询 例如select from table 为什么结果与我期望的顺序不一样 可以通过在语句中使用 Order by 子句来强制查询的顺序 SQL 数据库实际上并不了解您放置内容的顺序 或者按照给定顺序存储
  • 用于检查 API 与 Android 的兼容性的 Maven 插件

    我正在寻找一个 Maven 插件 可以检查 Jar Class 文件是否符合 Android 指定的 API 级别 例如 所有类和方法都可以在 Android API 中解析吗 有人知道这样的插件吗 DX 工具似乎没有提供这样的功能 或者我
  • mysqldb ..“NoneType”对象不可下标

    这段代码在以下情况下工作正常cur execute and db commit 行被注释掉 即 如果我所做的只是打印查询 则该程序将运行 n 行 问题似乎出现在这里 player categories statistics cur fetc