python if 语句和布尔值(如何将两个函数合二为一)

python if-statement and boolean(how to combine two functions into one)

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

# 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 语句,它可以读取我的开关 table 的命令,但无法从开关 table 获取命令。我是否需要写布尔值或其他东西来确保它可以访问我的路由器 table?

更新(我首先尝试 select 两个命令,即 enable 和 conf t,然后我将识别我的输入,如果输入与我的开关字段匹配 "function", 它提供了一些命令,否则将匹配我的路由器字段 "function"):

# 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])

在更新代码中: 它不能 select 启用 conf t 命令 也无法到达我的路由器的字段来获取命令.. 但它可以select切换命令

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