私信  •  关注

Zero Piraeus

Zero Piraeus 最近创建的主题
Zero Piraeus 最近回复了
5 年前
回复了 Zero Piraeus 创建的主题 » 使用python删除数据库表中的行

Cursor.execute() 仅当它试图执行的SQL语句失败时才会引发异常,例如:

>>> cur.execute("This is not SQL")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.OperationalError: near "This": syntax error

>>> cur.execute("SELECT * FROM nonexistent_table;")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.OperationalError: no such table: nonexistent_table

一个有效的SQL语句没有正确地执行任何操作,它已经成功,没有失败,因此不会引发异常。你的 DELETE 语句在找不到 name ,所以没有错误。

您可以使用 Cursor.rowcount 属性。重新编写代码以使用属性如下:

name = input("Enter Student name you want to delete:")
cur.execute('DELETE FROM studentdata WHERE name = ?;', [name])
if cur.rowcount > 0:
    print("Data Deleted Successfully")
    conn.commit()
else:
    print("No data found with this name:", name)

commit() 根据应用程序的不同,它在代码中的位置可能实际上应该移动到 if / else

6 年前
回复了 Zero Piraeus 创建的主题 » 在python代码中使用pass语句的目的是什么?[复制品]

python的语法要求是在 if , except , def , class 等)不能为空。然而,空代码块在各种不同的上下文中都很有用,例如下面的示例,这是我见过的最常见的用例。

因此,如果代码块中不应该发生任何事情,则 pass 需要这样一个块才能不产生 IndentationError . 或者,任何语句(包括要评估的术语,如 Ellipsis 字面意义的 ... 或者可以使用字符串,通常是docstring),但是 通过 明确表示实际上什么都不应该发生,也不需要实际评估和(至少暂时)存储在内存中。

  • 忽略(全部或)某种类型的 Exception (示例来自 xml ):

    try:
        self.version = "Expat %d.%d.%d" % expat.version_info
    except AttributeError:
        pass # unknown
    

    注: 忽略所有类型的引发,如下例所示 pandas ,通常被认为是不好的做法,因为它还捕获可能应传递给调用方的异常,例如。 KeyboardInterrupt SystemExit (甚至) HardwareIsOnFireError 你怎么知道你没有在一个定义了特定错误的自定义框上运行,一些调用应用程序会想知道这些错误?).

    try:
        os.unlink(filename_larry)
    except:
        pass
    

    而是至少使用 except Error: 或者在这种情况下最好 except OSError: 被认为是更好的做法。对我安装的所有python模块的快速分析使我发现 except ...: pass 语句捕获所有异常,因此它仍然是python编程中的常见模式。

  • 派生不添加新行为的异常类(例如 scipy ):

    class CompileError(Exception):
        pass
    

    类似地,作为抽象基类的类通常有一个显式的空 __init__ 或者子类应该派生的其他方法。(例如) pebl )

    class _BaseSubmittingController(_BaseController):
        def submit(self, tasks): pass
        def retrieve(self, deferred_results): pass
    
  • 在不关心结果的情况下(从 mpmath ):

    for x, error in MDNewton(mp, f, (1,-2), verbose=0,
                             norm=lambda x: norm(x, inf)):
        pass
    
  • 在类或函数定义中,通常docstring已经作为 强制性声明 作为街区里唯一的东西被处决。在这种情况下,块可以包含 通过 此外 对于docstring,为了表示“这实际上是为了什么也不做”。 聚乙二醇 :

    class ParsingError(Exception): 
        """Error encountered while parsing an ill-formed datafile."""
        pass
    
  • 在某些情况下, 通过 用作占位符来表示此方法/类/if块/…尚未实现,但这将是执行它的地方,尽管我个人更喜欢 省略 字面意义的 为了严格区分这一点和前一个示例中的故意“不操作”。 例如,如果我用粗笔画写一个模型,我可能会写

    def update_agent(agent):
        ... 
    

    其他人可能有的地方

    def update_agent(agent):
        pass
    

    之前

    def time_step(agents):
        for agent in agents:
            update_agent(agent)
    

    以提醒您填写 update_agent 稍后运行函数,但已运行一些测试,以查看其余代码是否按预期运行。(本案的第三种选择是 raise NotImplementedError . 这在两种情况下尤其有用:或者 这个抽象方法应该由每个子类实现,在这个基类中没有通用的方法来定义它 –此函数的名称尚未在此版本中实现,但它的签名将是这样的– )