【问题标题】:How to query MySQL Record value to Python Variables?如何将 MySQL 记录值查询到 Python 变量?
【发布时间】:2021-09-15 18:17:28
【问题描述】:

我想为 python 变量提供我从 MySQL 数据库中获取的值。

#!/usr/bin/python -u
# -*- coding: UTF-8 -*-

import time
import datetime
import mysql.connector
import sys

db = mysql.connector.connect(
    host = "localhost",
    user = "admin",
    password = "admin",
    db = "testonly"
)
mycursor = db.cursor()

if __name__ == '__main__':
    temp = 0
    mycursor.execute("SELECT temperature FROM table ORDER BY primarykey DESC LIMIT 1;") #By selecting one column in a row, I fetch only one record from the talbe.
    data = mycursor.fetchone()
    for temperature in data:
        print(temperature)

    temp = data['temperature']

    sys.exit() 

然后我有这样的错误:

File "test.py", line 28, in <module>
    temp = data['temperature']
TypeError: tuple indices must be integers, not str

我可以通过哪种方式为 python 变量赋值以供以后使用?

【问题讨论】:

    标签: python mysql


    【解决方案1】:

    默认情况下,fetchone 返回一个包含数据库数据的元组。就目前而言,您需要按索引访问数据

    temp = data[0]
    

    如果您想通过temperature 键访问您的数据,您需要使用指定您的光标

    from mysql.connector.cursor import MySQLCursorDict
    ...
    
    mycursor = db.cursor(cursor_class=MySQLCursorDict)
    
    ...
    
    temp = data['temperature']
    

    【讨论】:

      【解决方案2】:

      您的对象data 是一个元组,不能这样引用。你需要使用这个:

      temp = data[0]
      

      【讨论】:

      • 谢谢,这行得通。如果我想在一次选择中查询 2 个值怎么办? ``` mycursor.execute("SELECT temperature,pressure FROM table ORDER BY primarykey DESC LIMIT 1;") data = mycursor.fetchone() for x in data: print(temperature, pressure) temp = data[0] pres = data [1] ```
      • 如你想选择两列或更多列?您可以通过索引来做到这一点。示例:data[:2] 我是否正确理解了您的问题?
      • 是的,我想选择 2 列,我想在一次选择中将其值赋予 2 个单独的变量。
      • 我猜元组解包应该适合你,因为只有两个变量。请试试这个:temp , press = data
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2021-03-20
      相关资源
      最近更新 更多