2017-10-13 13 views
-1

私は、SQLデータベースにデータを変更/追加するにはいくつかの方法でPythonのファイル(sql_script.py)を持っている書き込みPythonコード

  • import_data_into_specifications_table
  • import_data_into_linkage_table
  • truncate_linkage_table
  • を言います
  • ....(do_other_stuff_on_db)
  • connect_db

時々私は私が行うために必要なものに応じて、メインの方法を変更したなかったものを今まで

そのうちのいくつか他の人は、いくつかの、唯一の方法を呼び出す必要があり:

if __name__ == '__main__': 
    conn = connect_db() 
    import_data_into_specifications_table(conn= conn) 
    import_data_into_linkage_table(conn=conn) 
    conn.close() 

しかし、私コードをコミットする前にメインを削除することを常に覚えておく必要があるので、悪い習慣を見つけてください。

可能な選択肢は、外部のpythonファイルを書くことです。例えばlaunch_sql_script.pyです。私は実行する必要があります:

def import_spec_and_linkage(): 
    conn = connect_db() 
    import_data_into_specifications_table(conn= conn) 
    import_data_into_linkage_table(conn=conn) 
    conn.close() 

... 
if __name__ == '__main__': 
    import_spec_and_linkage() 

このファイルをバージョン管理すると便利ですが、メインコードを変更する必要があります。

これは良い方法だと思いますか?他に提案はありますか?

答えて

1

最も簡単な方法は、プログラム引数のメカニズムを使用することです。

ここsys.argv

でのぞき見を取得しますがスクラッチである:

def meow(): 
    print("Meow!") 
def bark(): 
    print("Bark!") 
def moo(): 
    print("Moo!") 

actions = { 
    "meow": meow, 
    "bark": bark, 
    "moo": moo, 
} 

from sys import argv 
actions[argv[1]]() 

あなたがargparseライブラリをチェックアウトし、洗練されたプログラムの引数を解析するつもりなら。

1

オプション1:個々のスクリプトにそれらを分離し、コマンドラインから

# import_data_into_specifications_table.py 
if name == '__main__': 
    conn = connect_db() # import from a shared fiel 
    import_data_into_specifications_table(conn= conn) 


# in bash 
$ import_data_into_specifications_table 

オプション2をそれぞれ実行します。場合は、コマンドライン引数

# my_sql_script.py 
if name == '__main__': 
    conn = connect_db() 

    if args.spec_table: # use argumentparser to get these 
     import_data_into_specifications_table(conn=conn) 
    if args.linkage_table: 
     import_data_into_linkage_table(conn=conn) 
    ... 

# in bash 
$ my_sql_script.py --spec_table --linkage_table 

を解析し、一つのファイルを書く私はオプション2を有利に働きます操作の順序は重要ではなく、常に一定です。多くの順列がある場合、私はオプション1に行きます。

関連する問題