strftime 问题 (python)
Issue with strftime (python)
我尝试在 Mosquitto Broker 上发送数据并在 SQLite 上添加相同的数据
这是我的脚本:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sqlite3
import logging
class Photos:
def __init__(self):
#Connection a la basse de donnees sqlite3
self.db = sqlite3.connect('/home/pi/FlowerPower.db')
#Preparation d'un objet cursor qui va executer les futures requetes SQL sur la base de donnees
self.cursor = self.db.cursor()
logging.basicConfig(filename='subscribeFP.log',level=logging.DEBUG, format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
def traitement(self, msg, numSonde):
try:
#Convertit le message poste par le publisher de byte a string
queryArgs = str(msg.payload)
#Variable nom de la sonde
nomSonde = str(numSonde[2])
#Prepare la requete SQL pour la table photo
queryText = "INSERT INTO photos(sonde, date, photos) VALUES (?, ?, ?)", (nomSonde, strftime('%%d-%%m-%%Y %%H:%%%M:%%S','now','localtime'), queryArgs)
#Execute la requete SQL sur la BDD
self.cursor.execute(str(queryText))
#Commit pour etre sur que la requete SQL est effectuee
self.db.commit()
#Code d'exception
except sqlite3.Error as e:
self.logging.error('Erreur Sqlite3: ' + str(e))
#Retour en arrière si il y a une erreur (proprietes ACID)
self.db.rollback()
当我发送带有 mosquitto_pub
的数据时出现此错误:
File "/usr/lib/python3/dist-packages/mosquitto.py", line 720, in loop
rc = self.loop_read(max_packets)
File "/usr/lib/python3/dist-packages/mosquitto.py", line 961, in loop_read
rc = self._packet_read()
File "/usr/lib/python3/dist-packages/mosquitto.py", line 1360, in _packet_read
rc = self._packet_handle()
File "/usr/lib/python3/dist-packages/mosquitto.py", line 1775, in _packet_handle
return self._handle_publish()
File "/usr/lib/python3/dist-packages/mosquitto.py", line 1888, in _handle_publish
self.on_message(self, self._userdata, message)
File "insertionBdd.py", line 37, in on_message
photos.traitement(msg, numSonde)
File "/home/pi/photosFP.py", line 22, in traitement
queryText = "INSERT INTO photos(sonde, date, photos) VALUES (?, ?, ?)", (nomSonde, strftime('%%d-%%m-%%Y %%H:%%%M:%%S','now','localtime'), queryArgs)
NameError: global name 'strftime' is not defined
我不明白为什么会出现这个错误,我已经尝试添加:"from datetime importe datetime"
我的另一个脚本 运行 和 strftime
但没有这个问题......
有人可以帮助我吗?
正如消息所说,您还没有定义 strftime
,您只定义了 datetime
。
strftime
是日期时间对象的一种方法。但是,您似乎将其作为独立函数调用,并向其传递了一些字符串:这根本不是它的工作原理。我不确定您要做什么,但看起来您想获取当前时间并对其进行格式化。所以,你需要实际调用相关方法:
datetime.now().strftime('%d-%m-%Y %H:%M:%S')
我也不确定 'localtime'
在您的代码中做了什么,或者为什么您将百分号加倍。
我尝试在 Mosquitto Broker 上发送数据并在 SQLite 上添加相同的数据 这是我的脚本:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sqlite3
import logging
class Photos:
def __init__(self):
#Connection a la basse de donnees sqlite3
self.db = sqlite3.connect('/home/pi/FlowerPower.db')
#Preparation d'un objet cursor qui va executer les futures requetes SQL sur la base de donnees
self.cursor = self.db.cursor()
logging.basicConfig(filename='subscribeFP.log',level=logging.DEBUG, format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
def traitement(self, msg, numSonde):
try:
#Convertit le message poste par le publisher de byte a string
queryArgs = str(msg.payload)
#Variable nom de la sonde
nomSonde = str(numSonde[2])
#Prepare la requete SQL pour la table photo
queryText = "INSERT INTO photos(sonde, date, photos) VALUES (?, ?, ?)", (nomSonde, strftime('%%d-%%m-%%Y %%H:%%%M:%%S','now','localtime'), queryArgs)
#Execute la requete SQL sur la BDD
self.cursor.execute(str(queryText))
#Commit pour etre sur que la requete SQL est effectuee
self.db.commit()
#Code d'exception
except sqlite3.Error as e:
self.logging.error('Erreur Sqlite3: ' + str(e))
#Retour en arrière si il y a une erreur (proprietes ACID)
self.db.rollback()
当我发送带有 mosquitto_pub
的数据时出现此错误:
File "/usr/lib/python3/dist-packages/mosquitto.py", line 720, in loop
rc = self.loop_read(max_packets)
File "/usr/lib/python3/dist-packages/mosquitto.py", line 961, in loop_read
rc = self._packet_read()
File "/usr/lib/python3/dist-packages/mosquitto.py", line 1360, in _packet_read
rc = self._packet_handle()
File "/usr/lib/python3/dist-packages/mosquitto.py", line 1775, in _packet_handle
return self._handle_publish()
File "/usr/lib/python3/dist-packages/mosquitto.py", line 1888, in _handle_publish
self.on_message(self, self._userdata, message)
File "insertionBdd.py", line 37, in on_message
photos.traitement(msg, numSonde)
File "/home/pi/photosFP.py", line 22, in traitement
queryText = "INSERT INTO photos(sonde, date, photos) VALUES (?, ?, ?)", (nomSonde, strftime('%%d-%%m-%%Y %%H:%%%M:%%S','now','localtime'), queryArgs)
NameError: global name 'strftime' is not defined
我不明白为什么会出现这个错误,我已经尝试添加:"from datetime importe datetime"
我的另一个脚本 运行 和 strftime
但没有这个问题......
有人可以帮助我吗?
正如消息所说,您还没有定义 strftime
,您只定义了 datetime
。
strftime
是日期时间对象的一种方法。但是,您似乎将其作为独立函数调用,并向其传递了一些字符串:这根本不是它的工作原理。我不确定您要做什么,但看起来您想获取当前时间并对其进行格式化。所以,你需要实际调用相关方法:
datetime.now().strftime('%d-%m-%Y %H:%M:%S')
我也不确定 'localtime'
在您的代码中做了什么,或者为什么您将百分号加倍。