当前位置: 首页 > 知识库问答 >
问题:

利用python和fetchall()匹配数据库查询面临的问题

诸葛文博
2023-03-14

蛋白质和非蛋白质是由它们的编码来表示的。

我编写的python程序的目的是从用户那里获取代码,它应该搜索两个数据库表,并判断是否属于蛋白质、非蛋白质或两者都不属于。代码如下:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="root",
  database="abdb"
)


while True:
    ch = int(input("\n1.Search by code\n2.Search by species\n\nPlease choose an option "))
    if ch==1:
        log =input("Enter the code value for the respective protein\n")
        mycursor = mydb.cursor(buffered=True)
        mycursor.execute("SELECT * FROM protein_complex WHERE code_name='%s' ",log)
        mycursor2 = mydb.cursor(buffered=True)
        mycursor2.execute("SELECT * FROM nonprotein_complex WHERE name='%s' ",log)
        
        rows1=mycursor.fetchall()
        rows2=mycursor2.fetchall()
        if rows1 is None:
            if rows2 is None:
                print("Not present")
            else:
                print("Non protein")
        else:
            print("protein")
    
    

但是,在输出中,每当我输入一个代码,它只是被归类到一个蛋白质。它从不去“非蛋白质”或“无”部分。你能帮我解释一下为什么会这样吗?

输出如下:

共有1个答案

谢同化
2023-03-14

因为if和else语句不是这样工作的。如果第一个If语句为true,那么第二个甚至不会执行。这意味着在您的示例中,如果rows1为none:不是这种情况,则else:print(“protein”)将执行。在您的情况下,您在else语句中打印出来的唯一东西是“蛋白质”,而不是其他东西。要实际打印这两个结果,无论是否打印蛋白质,您必须在每个语句中打印“蛋白质”和“非蛋白质”(如果您总是希望显示这两个结果)。

 类似资料:
  • 本文向大家介绍Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例,包括了Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python 操作mysql数据库查询之fetchone(), fetchmany()

  • 必须要指定字段名么?不能类似 PHP 那样写了 SQL 直接用么

  • 本文向大家介绍使用Python查询SAP数据库,包括了使用Python查询SAP数据库的使用技巧和注意事项,需要的朋友参考一下 Python是最常用的面向对象编程语言之一,非常易于编码和理解。 为了将Python与SAP结合使用,我们需要安装Python SAP RFC模块,即PyRFC。它的可用方法之一是RFC_READ_TABLE,可以调用该方法以从SAP数据库中的表读取数据。 同样,PyRF

  • 问题内容: 我有以下 匹配 查询字符串: 我想它的意思是,但实际上它能执行。 然后我尝试了 术语 查询字符串: 它执行,显示 术语 查询通过数组支持多个OR条件。 我很好奇为什么 匹配 查询不支持通过数组的 OR 条件?并且它不显示任何语法错误。 问题答案: 该查询仅支持要指定的单个字符串值。官方文档中没有明确指定它,但是如果您愿意阅读的源代码,则可以看到,在解析字段时,解析器将跳过标记来分隔数组

  • SqliteOpenHelper只是一个工具,是SQL世界和OOP之间的一个通道。我们要新建几个类来请求已经保存在数据库中的数据,和保存新的数据。被定义的类会使用ForecastDbHelper和DataMapper来转换数据库中的数据到domain models。我仍旧使用默认值的方式来实现简单的依赖注入: class ForecastDb( val forecastDbHelper:

  • 本文向大家介绍利用Django框架中select_related和prefetch_related函数对数据库查询优化,包括了利用Django框架中select_related和prefetch_related函数对数据库查询优化的使用技巧和注意事项,需要的朋友参考一下 实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡、居住地、以及到过的城市。数据库设计如下: Models.py