2016-05-06 6 views
0
import sqlite3 
import math 
import Dish_vol 

try: 
    conn = sqlite3.connect('C:\\Users\\TJgro\\Desktop\\NEW_ATG\\\ 
Databases\\\Systems.db') 
    print("Connection Successful") 
except: 
    print("Unsuccessful connection") 

c=conn.cursor() 

c.execute("DROP TABLE IF EXISTS Tanks") 

c.execute("CREATE TABLE Tanks \ 
(ID INT PRIMARY KEY NOT NULL,\ 
DIR_Tag VARCHAR(255) NOT NULL,\ 
PRO_Type INT NOT NULL,\ 
PRO_Shape INT NOT NULL,\ 
DIR_Radius INT NOT NULL,\ 
DIR_Dish1 INT NOT NULL,\ 
DIR_Dish2 INT NOT NULL,\ 
DIR_Length INT NOT NULL,\ 
DIR_Capacity INT NOT NULL,\ 
DIR_HighAlarm INT NOT NULL,\ 
DIR_LowAlarm INT NOT NULL,\ 
DIR_WaterAlarm INT NOT NULL,\ 
DIR_Hysteresis INT NOT NULL,\ 
DIR_Area VARCHAR(255) NOT NULL,\ 
DIR_LevelOffset INT NOT NULL,\ 
DIR_SpecificGravity INT NOT NULL,\ 
DIR_MoveCount INT NOT NULL,\ 
DIR_MinMovement INT NOT NULL,\ 
DIR_MinimumDelivery INT NOT NULL,\ 
DIR_MinimumTheft INT NOT NULL,\ 
DIR_DeliveryGap INT NOT NULL,\ 
DIR_ProbeRange INT NOT NULL,\ 
PRO_TCPVolumeEnable INT NOT NULL,\ 
PRO_TCPUllageEnable INT NOT NULL,\ 
PRO_TCPTemperatureEnable INT NOT NULL,\ 
VAR_Pressure INT NOT NULL,\ 
VAR_LevelReg INT NOT NULL,\ 
AUX_Ullage INT NOT NULL,\ 
VAR_HMI_1_Volume INT NOT NULL,\ 
VAR_HMI_1_Ullage INT NOT NULL,\ 
VAR_HMI_1_Temperature INT NOT NULL,\ 
VAR_HMI_2_Volume INT NOT NULL,\ 
VAR_HMI_2_Ullage INT NOT NULL,\ 
VAR_HMI_2_Temperature INT NOT NULL,\ 
VAR_HMI_3_Volume INT NOT NULL,\ 
VAR_HMI_3_Ullage INT NOT NULL,\ 
VAR_HMI_3_Temperature INT NOT NULL,\ 
VAR_AlarmRelayReg INT NOT NULL)") 

for t in [(0, 'xyz', 'abc', 5, 15, 1371, 1500, 1500, 9144, 0, 0, 0, \ 
     0, 0, 10, 1, 1, 0, 0, 0, 0, 0, 2500, 0, 0, 0,\ 
     1000, 1000, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
     (1, 'xyz', 'abc', 5, 10, 1371, 1500, 1500, 9144, 0, 0, 0, \ 
     0, 0, 10, 1, 1, 0, 0, 0, 0, 0, 2500, 0, 0, 0,\ 
     1000, 1000, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
     (2, 'xyz', 'abc', 5, 12, 1371, 1500, 1500, 9144, 0, 0, 0, \ 
     0, 0, 10, 1, 1, 0, 0, 0, 0, 0, 2500, 0, 0, 0,\ 
     1000, 1000, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
     ]: 

c.execute("INSERT INTO Tanks VALUES\ 
(?,?,?,?,?,?,?,?,\ 
?,?,?,?,?,?,?,?,\ 
?,?,?,?,?,?,?,?,\ 
?,?,?,?,?,?,?,?,\ 
?,?,?,?,?,?,?)",t) 

で反復可能ではないエラーメッセージint型を理解していない、私は実行する必要があるいくつかの計算を持っているので、私は必要なフィールドを選択し、データベースを形成する:私はテーブルを作成し、それを移入した後、私のコード

dish1Volume = Dish_vol.Dish_Vol(DIR_Radius, DIR_Dish1, VAR_LevelReg) 

for row in c.execute("SELECT DIR_Radius, VAR_LevelReg, DIR_Length FROM Tanks"): 
for [DIR_Radius, VAR_LevelReg, DIR_Length] in row: 
    cylinderVolume = (((DIR_Radius * DIR_Radius) * math.acos((DIR_Radius - VAR_LevelReg)/DIR_Radius)) - \ 
       ((DIR_Radius - VAR_LevelReg) * math.sqrt((DIR_Radius * DIR_Radius) - \ 
       ((DIR_Radius - VAR_LevelReg) * (DIR_Radius - VAR_LevelReg))))) * (DIR_Length/1000.0) 

    volume = cylinderVolume/1000.0 

    Total = volume + dish1Volume + dish1Volume 
    print (Total) 

が、私はエラーメッセージが表示されます:
c.execute("SELECT DIR_Dish1 FROM Tanks") 
DIR_Dish1 = c.fetchall() 
print (DIR_Dish1) 
c.execute("SELECT DIR_Radius FROM Tanks") 
DIR_Radius = c.fetchall() 
print (DIR_Radius) 
c.execute("SELECT VAR_LevelReg FROM Tanks") 
VAR_LevelReg = c.fetchall() 
print (VAR_LevelReg) 
c.execute("SELECT DIR_Length FROM Tanks") 
DIR_Length = c.fetchall() 
print (DIR_Length) 

は今、私はいくつかの計算を持って、変数を持っています私は変数DIR_Dish1などが整数であるが、コードの別の部分で同じ構文が望ましい結果をもたらすことを理解し

for row in c.execute("SELECT DIR_Dish1 FROM Tanks"): 
for DIR_Dish1 in row: 
    if DIR_Dish1 > 0.001: 
     int1 = math.pi * DIR_Dish1 
     int3 = 4 * DIR_Dish1 * DIR_Dish1 

私は繰り返し処理できるようにループを作るにはどうすればよいです私が必要とする3つの変数を使用してデータベース?

答えて

2

rowは、列の値を持つタプルです。あなたは、行をループしようと3つの別々の名前に、各列の値を展開します。これは、任意の行の最初の列の値に次のような影響が出

for [DIR_Radius, VAR_LevelReg, DIR_Length] in row: 

>>> [DIR_Radius, VAR_LevelReg, DIR_Length] = 42 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'int' object is not iterable 

単に使用します行のassigment、直接、forループなし:

DIR_Radius, VAR_LevelReg, DIR_Length = row 

角括弧は本当にここに必要とされていません。

+0

ありがとう、これで解決しました! –

関連する問題