编写执行python脚本的python代码

编写执行python脚本的python代码,python,Python,我有一个Python文件(sql_script.py),其中有一些方法可以将数据添加/修改到sql数据库中,比如 将\u数据\u导入\u规范\u表 将数据导入链接表 截断链接表 ..(在数据库上做其他事情) 连接数据库 有时我只需要调用其中一个方法,其他一些方法则需要调用其中的几个方法 到目前为止,我所做的是根据需要修改主要方法: if __name__ == '__main__': conn = connect_db() import_data_into_specifica

我有一个Python文件(sql_script.py),其中有一些方法可以将数据添加/修改到sql数据库中,比如

  • 将\u数据\u导入\u规范\u表
  • 将数据导入链接表
  • 截断链接表
  • ..(在数据库上做其他事情)
  • 连接数据库
有时我只需要调用其中一个方法,其他一些方法则需要调用其中的几个方法

到目前为止,我所做的是根据需要修改主要方法:

if __name__ == '__main__':
    conn = connect_db()
    import_data_into_specifications_table(conn= conn)
    import_data_into_linkage_table(conn=conn)
    conn.close()
但我发现这是一种糟糕的做法,因为我总是要记住在提交代码之前删除main

一个可能的选择是编写一个外部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:将它们分成单独的脚本,并从命令行运行每个脚本

# 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

最简单的方法是使用程序参数机制:描述脚本执行期间的预期操作

看一眼

以下是抓痕:

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]]()
若要解析复杂的程序参数,请查看库