Только что вернулся в тупик проекта. Я изучаю Python (с Flask) и играю со сценарием, который также использует немного MySQL.
У меня есть какой-то Python, работающий на Raspberry Pi, который обнаруживает Bluetooth, чтобы увидеть, есть люди или нет. Это пишет в таблицу MySQL и работает нормально.
Я пытаюсь прочитать строки назад и в настоящее время использую это:
conn = MySQLdb.connect(host="localhost", user = "xxxxxxx", passwd = "xxxxxxxx", db = "mydb")
cursor = conn.cursor()
cursor.execute("select status from occupants WHERE id = '1'")
data = cursor.fetchall()
conn.commit()
if (data[0] == "In"):
result = "In"
В моем файле шаблона у меня есть это:
{% if result == "In" %}
Do stuff
{% else %}
Do other stuff
результат всегда "Нет" на данный момент ... вероятно, из-за:
def index(iframe=None, result=None, targettemp=None, status=None, inttemp=None, result1=None, result2=None, result3=None, hiveSessionId=None):
Я провел множество поисков, но даже не знаю, ищу ли я правильную вещь.
Это так ужасно неправильно, что не стоит экономить, или это простая ошибка?
РЕДАКТИРОВАТЬ: Это весь маршрут в моем скрипте Python:
Я изменил один бит, чтобы просто установить результаты на 1. Это просто проверяет, что они передаются в шаблон, который работает. Я также добавил еще один результат. Так что теперь, когда я смотрю на мой вывод, он отображает «Blah», который подтверждает этот результат! = «In», хотя я вижу, что он находится в таблице MySQL.
@app.route('/')
def index(iframe=None, result=None, targettemp=None, status=None, inttemp=None, result1=None, result2=None, result3=None, hiveSessionId=None):
import requests
import bluetooth
import time
import datetime
import MySQLdb
iframe = "http://xx.xx.xx.xx:xxxx/cam/min.php"
url = "https://api.prod.bgchprod.info:443/omnia/users"
if 'hiveSessionId' in session:
hiveSessionId = session['hiveSessionId']
headers = {
'Content-Type': "application/vnd.alertme.zoo-6.1+json",
'Accept': "application/vnd.alertme.zoo-6.1+json",
'X-Omnia-Client': "Hive Web Dashboard",
'X-Omnia-Access-Token': hiveSessionId,
'Cache-Control': "no-cache"
}
response = requests.request("GET", url, headers=headers)
data=response.json()
if 'errors' in data:
return redirect(url_for('hivelogin'))
conn = MySQLdb.connect(host="localhost", user = "xxxxx", passwd = "xxxxxx", db = "mydb")
cursor = conn.cursor()
cursor.execute("select status from occupants WHERE id = '1'")
data = cursor.fetchall()
conn.commit()
if (data[0] == "In"):
result = "In"
else:
result = "Blah"
result1 = 1
result2 = 1
result3 = 1
url = "https://api-prod.bgchprod.info:443/omnia/nodes/0e5f20fb-ab13-4d43-89ed-ec2481ea9012"
payload = "{\n \"nodes\": [{\n \"attributes\": {\n \"state\": {\"targetValue\": \"OFF\"}\n }\n }]\n}"
headers = {
'Content-Type': "application/vnd.alertme.zoo-6.1+json",
'Accept': "application/vnd.alertme.zoo-6.1+json",
'X-Omnia-Client': "Hive Web Dashboard",
'X-Omnia-Access-Token': hiveSessionId,
'Cache-Control': "no-cache",
}
responsetemp = requests.request("PUT", url, data=payload, headers=headers)
data=responsetemp.json()
inttemp = (data['nodes'][0]['attributes']['temperature']['reportedValue'])
inttemp = round(inttemp,1)
targettemp = (data['nodes'][0]['attributes']['targetHeatTemperature']['reportedValue'])
status = (data['nodes'][0]['attributes']['stateHeatingRelay']['reportedValue'])
return render_template('inout.html', iframe=iframe, status=status, targettemp=targettemp, inttemp=inttemp, hiveSessionId=hiveSessionId, result=result, result1=result1, result2=result2, result3=result3)
return redirect(url_for('hivelogin'))