【问题标题】:SQL query is creating an empty list [duplicate]SQL查询正在创建一个空列表[重复]
【发布时间】:2021-07-14 23:16:11
【问题描述】:
try:
    conn = sql.connect(file)
    cursor = conn.cursor()
    print("Connected to Database.")
except:
    print ("Connection failed.")

try:  
    sql_query = "SELECT * FROM strains WHERE Shelf = (?) and 'Strain Type' = (?)"
    args = (shelfplacement, straintype,)
    cursor.execute(sql_query,args) 
    simstrains = cursor.fetchall()
    print("Similar Strains:")
    for row in simstrains:
        print("Strain Type: ", row[0])
        print("Percentage Mix: ", row[1])
        print("Strain: ", row[3])
        print("Shelf: ", row[4])
        print("THC Percent: ", row[9])
        print("\n")
        
    cursor.close()
    
except sql.Error as error:
    print(error)
    
finally:
    if conn:
        conn.close()
        print('The SQL connection is closed')
         
getstraininfo()

    

此代码未使用填充列表填充 simstrains 变量。我的查询语句不正确吗?我将不胜感激任何形式的帮助!

【问题讨论】:

  • “应变类型”周围有单引号,这使它成为一个字符串。当您将其他任何内容与该字符串进行比较时,结果条件为 False,从而返回一个空结果集。
  • @mechanical_meat 问题被标记为sqlite。为什么你不知道他们使用的是什么数据库?
  • @Barmar:啊,我的错误没有看到标签。谢谢。
  • 这与您之前提出的问题基本相同。那我告诉你用反引号,你为什么不试试呢? stackoverflow.com/questions/68385240/…
  • 我在代码上使用了它们,它消除了语法错误(谢谢)。我现在的错误是它没有显示结果。我使用 fetchall 创建了 simstrains 列表,但列表为空,因此 for 循环不打印任何内容。

标签: python sql database sqlite


【解决方案1】:

尝试将“应变类型”替换为 [应变类型]。带空格的列名需要用 [] 或 " "

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2021-09-17
    • 2011-03-10
    • 2012-02-11
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多