回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>代码如下:</p>
<pre><code>import MySQLdb
from socket import *
import time
address = ( '192.168.1.177', 5000)
client_socket = socket(AF_INET, SOCK_DGRAM) #Set Up the Socket
client_socket.settimeout(30) # wait 30 seconds for a response
while(1): #Main Loop
data = "send" #Set data to Blue Command
client_socket.sendto(data, address) #send command to micro
rec_data, addr = client_socket.recvfrom(1024) #Read response from micro
print rec_data #Print the response from micro
sdata = rec_data.split(',') #csv string split
Vrms = 123.1 #float(sdata[0]) #
Irms = 213.45 #float(sdata[1])
RP = 10.1 #float(sdata[2])
AP = 1121.6 #float(sdata[3])
PF = 1.02 #float(sdata[4])
CPS = 60.41 #float(sdata[5])
UP = 1154.1 #float(sdata[6])
BV = 27.22 #float(sdata[7])
BI = 78.66 #float(sdata[8])
WI = 50.87 #float(sdata[9])
EI = 23.83 #float(sdata[10])
temp_BP = 78.2 #float(sdata[11])
gridOK = 1 #int(sdata[12])
genON = 0 #int(sdata[13])
genOK = 0 #int(sdata[14])
db = MySQLdb.connect("localhost","charlie","chab1541","PowerData")
c = db.cursor ()
c.execute("""INSERT INTO data
VALUES (%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %d, %d, %d )""",
(Vrms, Irms, RP, AP, PF, CPS, UP, BV, BI, WI, EI, temp_BP, gridOK, genON, genOK))
db.commit ()
c.close ()
db.close ()
</code></pre>
<p>错误如下:</p>
<p>回溯(最近一次呼叫时间):
文件“C:/Users/Charlie/PycharmProjects/Read Store Power Data/PowerParser.py”,第41行,in
(Vrms、Irms、RP、AP、PF、CPS、UP、BV、BI、WI、EI、temp_BP、gridOK、genON、genOK)
文件“C:\ Python27\lib\site packages\MySQLdb\cursors.py”,第183行,在execute中
query=查询%db.literal(args)
TypeError:需要float参数,而不是str</p>
<p>我好像摆脱不了浮动误差。我注释掉了经过解析的浮点转换列表,认为这是一个没有乐趣的问题。当然,去掉变量名和硬编码浮动是可行的。</p>
<p>我错过了什么!现在有头脑。。。
请告诉我我的错误!</p>