Member 14488635 Ответов: 2

Кто-нибудь может помочь? - Пожалуйста.


import sys
import os
import time
import calendar
#import MariaDB
#import phpMyAdmin
import MySQLdb
#import pymysql
import time
from time import *

lt = localtime()


file = open('/sys/bus/w1/devices/28-030797798738/w1_slave')
filecontent = file.read()
file.close()
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperatur_sensor1 = float(stringvalue[2:]) / 1000
print "hhhhhhh", temperatur_sensor1
connection = MySQLdb.connect (host="localhost", user="Smart", passwd="123456", db="mysql", charset='utf8')

cursor = connection.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS temperatur6 (temperatur6 FLOAT(5))""")
print "ggggggg", temperatur_sensor1
cursor.execute("INSERT INTO temperatur6 VALUES ( '%s' ) "),(temperatur_sensor1)
print "ffffff", temperatur_sensor1

connection.commit()
cursor.close();

sys.exit(0)


Проблема Варинга это?___________________________________________________________


Test_1.py:37: Warning: Incorrect double value: '%s' for column 'temperatur6' at row 1
  cursor.execute("INSERT INTO temperatur6 VALUES ( '%s' ) "),(temperatur_sensor1)


Что я уже пробовал:

Я уже почти все перепробовал. Вставить A %d или удалить " знаки.

0x01AA

Устарело после Q EditВ вашей таблице есть один столбец "temperatur6", но вы пытаетесь вставить два столбца...

2 Ответов

Рейтинг:
1

Richard MacCutchan

Это предположение, так как у меня нет MySqldb в моей системе. Но глядя на синтаксис операторов MySQL в документации, я задаюсь вопросом, правильны ли ваши символы кавычек и скобки. Попробуйте изменить вставку на:

cursor.execute("""INSERT INTO temperatur6 VALUES (%s) """,(temperatur_sensor1))


Рейтинг:
0

Richard MacCutchan

temperatur_sensor1 это значение с плавающей точкой, а не строка.


Member 14488635

Da soll aber eine Dezimalzahl wie z.Bsp: 29.44 rein. Был ли muss ich denn ändern? Данке!!

0x01AA

Du solltest in Englisch antworten ;)

Richard MacCutchan

Это англоязычный сайт. Если вы не говорите на разумном английском языке, вы можете использовать Google Translate.

Member 14488635

Извиняюсь. Я забыл написать по-английски.
Я просто хочу знать, что я должен изменить в коде программы? Я действительно бесклеевой. Ты можешь мне намекнуть? Пожалуйста!

Richard MacCutchan

Начните с документации: Руководство пользователя MySQLdb — документация MySQLdb 1.2.4b4[^].

Member 14488635

Хорошо. Может, это и к лучшему. Спасибо за вашу помощь. Дайте вам знать, если это было успешно. Спасибо

Member 14488635

Печать работает отлично!

Richard MacCutchan

Смотрите мое предложение ниже.

Member 14488635

Вот и результат!
ххххххх 20.125
Test_3.py:35: предупреждение: таблица 'temperatur6' уже существует
курсор.выполнить("""создать таблицу, если не существует temperatur6 (temperatur6 с плавающей точкой(5))""")
Киселев: вести дня @ 20.125
Обратная трассировка (самый недавний призыв последнего):
Файл "Test_3.py", строка 37, in <module>
cursor.execute("""INSERT INTO temperatur6 VALUES (%s)""", (temperatur_sensor1))
Файл "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", строка 207, in execute
args = кортеж(map(db.literal, args))
TypeError: аргумент 2 для map() должен поддерживать итерацию

Но это выглядит лучше. По крайней мере, твое предложение было правильным! Спасибо

Richard MacCutchan

Хорошо, попробуйте обойтись без круглых скобок вокруг значения:

cursor.execute("""INSERT INTO temperatur6 VALUES (%s) """, temperatur_sensor1)

Richard MacCutchan

Мое последнее предположение заключается в том, что поле значения нуждается в запятой в конце, если есть только один элемент:

cursor.execute("""INSERT INTO temperatur6 VALUES (%s) """, (temperatur_sensor1,))