2016-04-03 115 views
1

我想使用mysql數據庫(db名稱:project)將變量(temp,hum)的值插入到我的表格傳感器中。我使用的是Ubuntu 14.04,並且在python和MySQL之間建立了連接,但是我無法放置變量的值。所以任何幫助都是值得歡迎的,謝謝。如何使用python 2.7將變量的值插入到mysql中?

這是我的腳本的Python:

from random import * 
import socket 
import sys 
import mysql.connector 
from datetime import datetime 

temp = randrange(10, 31, 2) 
hum = randrange(300, 701, 2) 

print temp 
print hum 

conn=mysql.connector.connect(user='root',password='12345',host='localhost',database='projet'); 
mycursor=conn.cursor(); 
mycursor.execute("""INSERT INTO sensors VALUES('$datetime','$temp','$hum')"""); 
conn.commit() 
mycursor.execute("SELECT * FROM sensors") 

這是我的表在這裏你可以找到變量TEMP和嗡嗡聲,而不是它們的值:

This is my table where you can find the variables temp and hum and not their values

+0

** WARNING **:請小心[正確逃生(HTTP://鮑比桌。 com/python.html)這些值。直接插入數據非常危險。 – tadman

回答

1

那是因爲你不及格將查詢中的變量值。與查詢到​​方法將它們傳遞:

mycursor.execute(""" 
    INSERT INTO 
     sensors 
    VALUES 
     ('$datetime', %s, %s)""", (temp, hum)) 

其中%s是查詢參數佔位符。請注意,數據庫驅動程序將自動處理參數類型轉換和轉義。

至於$datetime,如果你想在此列當前日期/日期時間,考慮使用NOW()CURDATE(),請參閱:

0

,但我可以放置變量的值

假設數據時間是一個字符串,其餘均爲整數

嘗試

"INSERT INTO sensors VALUES('%s','%d','%d')", %(date, temp, num) 

execute方法

+0

您確定該語法有效嗎? – alecxe