Python-MySQL-删除数据
时间:2020-02-23 14:43:02 来源:igfitidea点击:
在本教程中,我们将学习使用Python从MySQL数据库中删除数据。
删除表数据
要从表中删除数据,我们执行以下步骤。
使用mysql.connector.connect()方法连接到MySQL服务器。
从步骤1中创建的连接创建MySQL游标。
使用游标执行DELETE查询。
使用
commit()
方法保存更改。关闭连接。
在本教程中,我们将使用"员工"表。
该表已经有一些行,如下所示。
mysql> SELECT * FROM employee; +------------+-----------+----------+---------------------+ | employeeid | firstname | lastname | created_at | +------------+-----------+----------+---------------------+ | e01 | John | Doe | 2016-01-01 10:20:30 | | e02 | Jane | Doe | 2016-01-01 12:13:14 | | e03 | Peter | Parker | 2016-01-02 15:16:17 | | e04 | Bruce | Banner | 2016-01-03 10:20:30 | | e05 | Bruce | Wayne | 2016-01-04 12:00:00 | | e06 | Tony | Stark | 2016-01-05 12:13:14 | | e07 | Doctor | Strange | 2016-01-05 13:14:15 | | e08 | Dr. | Who | 2016-01-05 13:14:15 | +------------+-----------+----------+---------------------+ 8 rows in set (0.00 sec)
删除记录
要从表中删除记录,我们借助execute()方法的帮助,并传递SQL查询和值,以帮助我们从表中删除记录。
在下面的Python程序中,我们将删除ID为e08的员工。
# import module import mysql.connector # import errorcode from mysql.connector import errorcode # get db connection try: cnx = mysql.connector.connect( user='theitroadtheitroad', password='', host='127.0.0.1', database='mydb' ) except mysql.connector.Error as err: if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print('Invalid credential. Unable to access database.') elif err.errno == errorcode.ER_BAD_DB_ERROR: print('Database does not exists') else: print('Failed to connect to database') # now delete data try: # cursor cnxCursor = cnx.cursor() # placeholder employeeid = 'e08' # sql query query = "DELETE FROM employee WHERE employeeid = %s" # data data = (employeeid,) # execute cnxCursor.execute(query, data) # commit cnx.commit() # total number of rows inserted print("Total rows deleted: %d" % cnxCursor.rowcount) except mysql.connector.Error as err: print("Error:", err.message) # close connection cnx.close() except: print("Unknown error occurred!") # close connection cnx.close() finally: # close cursor cnxCursor.close() # close connection cnx.close()
如果成功,上面的代码将为我们提供以下输出。
Total rows deleted: 1
如果我们检查"员工"表,将得到以下输出。
mysql> SELECT * FROM employee; +------------+-----------+----------+---------------------+ | employeeid | firstname | lastname | created_at | +------------+-----------+----------+---------------------+ | e01 | John | Doe | 2016-01-01 10:20:30 | | e02 | Jane | Doe | 2016-01-01 12:13:14 | | e03 | Peter | Parker | 2016-01-02 15:16:17 | | e04 | Bruce | Banner | 2016-01-03 10:20:30 | | e05 | Bruce | Wayne | 2016-01-04 12:00:00 | | e06 | Tony | Stark | 2016-01-05 12:13:14 | | e07 | Doctor | Strange | 2016-01-05 13:14:15 | +------------+-----------+----------+---------------------+ 7 rows in set (0.00 sec)