Reputation: 3
actually i'm new to learning python and mysql database i have table named TABEL_NILAI in database like this:
id auto_increment primary key
NILAI_TRUST FLOAT
NAMA_ALAT VARCHAR(10)
--------------------------
|ID|NILAI_TRUST|NAMA_ALAT|
--------------------------
|1 | 0.12 | ALAT1 |
--------------------------
|2 | 0.34 | ALAT2 |
--------------------------
|3 | 0.54 | ALAT3 |
--------------------------
So i want to Retrieve value NILAI_TRUST from TABEL_NILAI and i want to do some math. here's code i was made:
kursor = db.cursor()
kursor.execute("SELECT NILAI_TRUST FROM TABEL_NILAI")
hasil = kursor.fetchall()
def hitung_standardeviasi():
#input data
TrustValue= x().split(',')
for i in range(len(TrustValue)):
TrustValue[i]= int(TrustValue[i])
jumlah=0
#Average
for i in range(len(TrustValue))
jumlah += TrustValue[i]
ratarata = jumlah/len(TrustValue)
total=0
#sigma
for i in range(len(TrustValue))
hitung = (TrustValue[i]-ratarata)**2
total += hitung
sigma = total/(len(TrustValue)-1)
#standardeviasi
standardeviasi = math.sqrt(sigma)
print(standardeviasi)
for x in hasil:
hitung_standardeviasi()
And giving me error like:
Traceback (most recent call last):
File "/home/lihat_tabel.py", line 60, in <module>
hitung_standardeviasi()
File "/home/lihat_tabel.py", line 24, in hitung_standardiviasi
Trustvalue = x().split(',')
TypeError: 'tuple' object is not callable
so how to retrieve value into python variable in right ways. Please help:(
Upvotes: 0
Views: 1434
Reputation: 55844
The query
kursor.execute("SELECT NILAI_TRUST FROM TABEL_NILAI")
will return a iterable of tuples, for example like this:
[(0.12,), (0.34,), (0.54,)]
So this line
TrustValue= x().split(',')
has two problems:
x()
It looks like you want to make TrustValue
a list of the int values of each result in the query. In that case this for
loop is unnecessary, because it will only it will make the code operate on a single result at a time:
# You don't need this
for x in hasil:
hitung_standardeviasi()
The hitung_standardeviasi
function could begin like this:
def hitung_standardeviasi():
#input data
results = list(hasil)
TrustValue= []
for i in range(len(results)):
TrustValue[i]= int(results[i][0])
jumlah=0
We can make this code a more readable by looping over the results directly instead of using the for i in range(len(collection)):
idiom, which is often unnecessary in Python:
def hitung_standardeviasi():
#input data
TrustValue= []
for (result,) in hasil:
TrustValue.append(int(result))
jumlah=0
Using a list comprehension is even more Pythonic:
def hitung_standardeviasi():
#input data
TrustValue = [int(result) for (result,) in hasil]
jumlah=0
You might want to look at the sum built-in function and the statistics module too.
Upvotes: 1