2012-04-24 25 views
0

там я сочинительство простого приложения в Python, которая будет контролировать использование моего процессора и оперативную память и поместить его в базу данных MySQL для дальнейшей обработки здесь мой код:Python MySQLdb вставить вопрос

import MySQLdb 
import psutil 


connection = MySQLdb.connect(host="localhost", port=8888, user="root", passwd="root", db="monitoring", unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock") 
c = connection.cursor() 

while True: 

    usage = psutil.cpu_percent(interval=1) 

    c.execute("INSERT INTO cpu (usage) VALUES (%s)", (usage)) 

    c.execute("SELECT * FROM cpu") 
    print c.fetchall() 

Вот libary, что я использую для для monitoring

Вот дамп для базы данных MySQL:

-- 
-- Table structure for table `cpu` 
-- 

    CREATE TABLE `cpu` (
     `id` int(12) NOT NULL AUTO_INCREMENT, 
     `usage` float NOT NULL, 
     `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
     PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ; 

Однако я не могу исправить эту ошибку при принятии Inse RT:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'usage) VALUES (12.9)' at line 1") 

Любые советы, чтобы исправить это? Прошу прощения, но я новичок в Python :)

Заранее спасибо.

ответ

1

Это не проблема Python. Проблема в том, что usage является зарезервированным словом в MySQL. Вы должны либо изменить название своего столбца на что-то другое, либо использовать обратные ссылки, чтобы указать его в своем коде:

+0

святая мать питона, я об этом не знал. После вашего исправления он работал как шарм. Большое спасибо. –