社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Zero Piraeus

Zero Piraeus 最近创建的主题
Zero Piraeus 最近回复了
6 年前
回复了 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

7 年前
回复了 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 . 这在两种情况下尤其有用:或者 这个抽象方法应该由每个子类实现,在这个基类中没有通用的方法来定义它 –此函数的名称尚未在此版本中实现,但它的签名将是这样的– )