欢迎访问宙启技术站
智能推送

Python操作数据库时常见的OperationalError()异常列表

发布时间:2024-01-11 06:21:19

在Python中,当操作数据库时,经常会遇到OperationalError异常。OperationalErrorpymysql模块中的一个异常类,它表示数据库操作时的操作错误。

下面是一些常见的OperationalError异常列表,以及它们的使用示例:

1. OperationalError(1045, "Access denied for user 'xxx'@'localhost' (using password: YES)")

这是连接数据库时用户名和密码错误的异常,通常是因为提供的用户名或密码不正确导致连接数据库失败。下面是一个示例:

   import pymysql
   
   try:
       conn = pymysql.connect(host='localhost', user='root', password='wrongpassword', db='test')
   except pymysql.OperationalError as e:
       print(e)  # 输出:(1045, "Access denied for user 'root'@'localhost' (using password: YES)")
   

2. OperationalError(2003, "Can't connect to MySQL server on 'localhost' (10061)")

这是无法连接到数据库服务器的异常,通常是因为数据库服务器没有启动或者连接的主机名或端口号不正确。下面是一个示例:

   import pymysql
   
   try:
       conn = pymysql.connect(host='localhost', user='root', password='password', db='test')
   except pymysql.OperationalError as e:
       print(e)  # 输出:(2003, "Can't connect to MySQL server on 'localhost' (10061)")
   

3. OperationalError(1146, "Table 'xxx' doesn't exist")

这是试图查询一个不存在的表的异常,通常是因为查询的表名拼写错误或者表不存在导致查询失败。下面是一个示例:

   import pymysql
   
   try:
       conn = pymysql.connect(host='localhost', user='root', password='password', db='test')
       cursor = conn.cursor()
       cursor.execute('SELECT * FROM nonexisttable')
   except pymysql.OperationalError as e:
       print(e)  # 输出:(1146, "Table 'nonexisttable' doesn't exist")
   

4. OperationalError(1054, "Unknown column 'xxx' in 'field list'")

这是查询一个不存在的列的异常,通常是因为查询的列名拼写错误或者列不存在导致查询失败。下面是一个示例:

   import pymysql
   
   try:
       conn = pymysql.connect(host='localhost', user='root', password='password', db='test')
       cursor = conn.cursor()
       cursor.execute('SELECT nonexistcolumn FROM mytable')
   except pymysql.OperationalError as e:
       print(e)  # 输出:(1054, "Unknown column 'nonexistcolumn' in 'field list'")
   

5. OperationalError(1213, 'Deadlock found when trying to get lock; try restarting transaction')

这是在并发环境下出现的死锁异常,通常是因为多个事务之间的资源争夺导致死锁发生。下面是一个示例:

   import pymysql
   
   try:
       conn = pymysql.connect(host='localhost', user='root', password='password', db='test')
       cursor = conn.cursor()
       cursor.execute('UPDATE mytable SET value = value + 1')
       conn.commit()
   except pymysql.OperationalError as e:
       print(e)  # 输出:(1213, 'Deadlock found when trying to get lock; try restarting transaction')
   

以上是一些常见的OperationalError异常列表,它们代表了在Python中操作数据库时可能出现的一些错误。通过捕获这些异常,我们可以更好地处理数据库操作中的错误情况,提高代码的健壮性和稳定性。