Python MySQL –将数据插入表
简介:在本教程中,您将学习如何使用MySQL Connector / Python API将数据插入表中。
要将新行插入到MySQL表中,请执行以下步骤:
通过创建一个新的MySQLConnection对象连接到MySQL数据库服务器。
从MySQLConnection对象初始化一个MySQLCursor对象。
执行INSERT语句以将数据插入表中。
关闭数据库连接。
MySQL Connector / Python提供的API允许您一次将一个或多个行插入到一个表中。
让我们更详细地研究每种方法。
在表格中插入一行
以下方法将新书插入books表中:
from mysql.connector import MySQLConnection, Error from python_mysql_dbconfig import read_db_config def insert_book(title, isbn): query = "INSERT INTO books(title,isbn) " \ "VALUES(%s,%s)" args = (title, isbn) try: db_config = read_db_config() conn = MySQLConnection(**db_config) cursor = conn.cursor() cursor.execute(query, args) if cursor.lastrowid: print('last insert id', cursor.lastrowid) else: print('last insert id not found') conn.commit() except Error as error: print(error) finally: cursor.close() conn.close() def main(): insert_book('A Sudden Light','9781439187036') if __name__ == '__main__': main()
在上面的代码中:
首先,从MySQL Connector / Python包导入MySQLConnection和Error对象,并从python_mysql_dbconfig模块导入read_db_config()函数。
接下来,定义一个名为insert_book()的新函数,该函数接受两个参数:title和isbn。
在insert_book()函数内部,构造一个INSERT语句(查询)和数据(args)以插入到books表中。
请注意,传递给函数的数据是元组。然后,创建一个新连接,执行该语句,然后在tryexcept块中提交更改。
请注意,必须显式调用commit()方法才能对数据库进行更改。
如果成功插入了新行,则可以使用MySQLCursor对象的lastrowid属性来检索AUTO_INCREMENT列的最后一个插入ID。之后,在insert_book()函数末尾关闭游标和数据库连接。
最后,调用insert_book()函数以在main()函数中的books表中插入新行。
在表格中插入多行
以下INSERT语句可让您在books表中插入多行:
INSERT INTO books(title,isbn) VALUES('Harry Potter And The Order Of The Phoenix', '9780439358071'), ('Gone with the Wind', '9780446675536'), ('Pride and Prejudice (Modern Library Classics)', '9780679783268');
要将多个行插入Python的表中,请使用MySQLCursor对象的executemany()方法。
请参见以下代码:
from mysql.connector import MySQLConnection, Error from python_mysql_dbconfig import read_db_config def insert_books(books): query = "INSERT INTO books(title,isbn) " \ "VALUES(%s,%s)" try: db_config = read_db_config() conn = MySQLConnection(**db_config) cursor = conn.cursor() cursor.executemany(query, books) conn.commit() except Error as e: print('Error:', e) finally: cursor.close() conn.close() def main(): books = [('Harry Potter And The Order Of The Phoenix', '9780439358071'), ('Gone with the Wind', '9780446675536'), ('Pride and Prejudice (Modern Library Classics)', '9780679783268')] insert_books(books) if __name__ == '__main__': main()
此示例中的逻辑类似于第一示例中的逻辑。
但是,我们不调用execute()方法,而是调用executemany()方法。
在main()函数中,我们将一个元组列表传递给insert_books()函数,其中每个元组包含书的标题和isbn。
通过调用MySQLCursor对象的executemany()方法,MySQL Connector / Python将INSERT语句转换为包含多个值列表的语句。
在本教程中,您学习了如何在Python表中插入一个或多个行。