python if-statement和boolean(如何将两个函数合并为一个)

时间:2015-03-24 05:38:53

标签: python if-statement sqlite boolean

我已经为每个表写了两个函数来接收字段的命令。而我的队友需要我将两个功能合二为一。最后我创建了这个函数,但它无法接收我的路由器表的命令。 这是我的两个功能:

# def readrouter(x):
#         conn = sqlite3.connect('server.db')
#         cur = conn.cursor()
#         cur.execute("SELECT DISTINCT command FROM router WHERE   function =? or function='configure terminal' or function='enable'  ORDER BY key ASC",(x,))
#         read = cur.fetchall()
#         return read;
#
# a = input("x:")
# for result in readrouter(a):
#     print (result[0])

# def readswitch(x):
#         conn = sqlite3.connect('server.db')
#         cur = conn.cursor()
#         cur.execute("SELECT DISTINCT command FROM switch WHERE   function =? or function='configure terminal' or function='enable'  ORDER BY key ASC",(x,))
#         read = cur.fetchall()
#         return read;
# a = input("x:")
# for result in readrouter(a):
#     print (result[0])

将两个函数合并为一个函数后,这是我的函数:

def readciscodevice(x):
        conn = sqlite3.connect('server.db')
        cur = conn.cursor()
        if x:
                cur.execute(
                        "SELECT DISTINCT command FROM switch WHERE   function =? or function='configure terminal' or function='enable'  ORDER BY key ASC",
                        (x,))
                read = cur.fetchall()
                return read
        else:
                cur.execute(
                        "SELECT DISTINCT command FROM router WHERE   function =? or function='configure terminal' or function='enable'  ORDER BY key ASC",
                        (x,))
                read = cur.fetchall()
                return read;


a = raw_input("x:")
for result in readciscodevice(a):
        print(result[0])

我使用我的if语句,它可以读取我的切换表的命令但无法从切换表中获取命令。我是否需要编写布尔值或其他内容以确保它可以访问我的路由器表?

更新(我试图首先选择两个命令,即启用和配置,然后我将识别我的输入,如果输入与我的开关" s字段匹配"功能&#34 ;它提供了一些命令,ELSE将匹配我的路由器"功能"):

# def readciscodevice(x):
#         conn = sqlite3.connect('server.db')
#         cur = conn.cursor()
#
#         cur.execute(
#                         "SELECT DISTINCT command FROM switch WHERE   function='configure terminal' or function='enable'  ORDER BY key ASC"
#         )
#
#         if x:
#                 cur.execute(
#                         "SELECT DISTINCT command FROM switch WHERE   function =?  ORDER BY key ASC",
#                         (x,))
#                 read = cur.fetchall()
#                 return read
#         else:
#                 cur.execute(
#                         "SELECT DISTINCT command FROM router WHERE   function =?   ORDER BY key ASC",
#                         (x,))
#                 read = cur.fetchall()
#                 return read;
#
#
# a = raw_input("x:")
# for result in readciscodevice(a):
#         print(result[0])

在更新代码中: 它无法选择enable conf t命令 也无法到达我的路由器的字段来获取命令.. 但它可以选择开关命令

1 个答案:

答案 0 :(得分:1)

您需要引入另一个参数来确定您希望执行哪个块,或者明确区分x的两个条件。 '如果x:'只检查x有一个有效(非假)值,那么空值的东西将会失败,如:0,None,false,''等。