2016-04-29 5 views
2

私はこのことを序文します。私はPythonにはかなり新しいです。データベース内のカラムヘッダーをPythonの変数として使用する方法はありますか?

私はデータベースを持っており、PythonとSQLiteを使用してデータベースにアクセスする必要があります。それは簡単な部分です。私はテーブルや列の名前などを作成しました:

c.execute("CREATE TABLE Tanks \ 
(ID INT PRIMARY KEY NOT NULL,\ 
... 
DIR_Radius INT NOT NULL,\ 
DIR_Dish1 INT NOT NULL,\ 
DIR_Dish2 INT NOT NULL,\ 
DIR_Length INT NOT NULL,\ 

など。それでは、私がやりたいことは、変数として列ヘッダを使用し、すなわち

Dish1 = 'DIR_Dish1' 

ですが、あなただけの変数名に文字列値を代入し、Pythonで知っている可能性として。私が先に行くことができるように、私は、comlumnの値がDIR_Dish1が0.001より大きい整数値を持っていることを確認しようとしています

Dir_Dish1 > 0.001 

def Dish_Vol(): 
if (Dish > 0.0001): 
    int1 = math.pi * Dish, 
    ... 

いずれも動作しませんと言っ

何らかの計算を実行する。どのように変数をそのように使うのですか?

+1

テーブルを作成しましたが、テーブルを作成しましたか?あなたはそれから選んだのですか?あなたの質問は私を混乱させる。私はあなたが何を正確にしようとしているのか分かりません。 – That1Guy

+0

ええ、テーブルにデータがあります。特定の列の値をチェックしようとしています。 DIR_Dish1。ただ1つの行しかないと仮定します。したがって、DIR_Dish1の値が0.001より大きい場合、プログラムはその関数を実行します。私はその列の値をチェックする方法を知りたいですし、プログラム全体で使用する変数を列に割り当てることはできますか? –

答えて

1

あなたは、あなたのテーブルの上に読んでSQLを実行し、テーブルを反復処理しているでしょう:

for row in c.execute("SELECT DIR_Radius from Tanks"): 
    if row[0]>0.0001: 
     int1 = math.pi * row[0] 
     ... 

あなたがテーブル内のいくつかの操作を行い、その後、既存の列を変更したり、ベースの新しい列を作成しようとしている場合あなたが適用する操作については、pandasを使う方が良いでしょう。 Pandasでは、クエリからデータフレームオブジェクトを作成し、処理(たとえば、新しい列の作成や既存の列の変更など)を行い、データフレームオブジェクトをto_sql()を使用してSQL環境に書き戻すことができます。

+0

速いかもしれません: 'SELECT DIR_Radius FROM Tanks WHERE Dir_Radius> 0.0001'。その後、Pythonコードから 'if'文を削除することができます。 –

関連する問題