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

python将数据插入数据库的案例分析

发布时间:2023-05-14 13:56:14

Python作为一种高效的计算机编程语言,在数据处理方面无疑是不可替代的存在。在开发过程中,通常会需要将数据存储到数据库中,以实现数据的长期存储和管理。Python提供了多种数据库驱动包,可以方便地实现数据的插入、查询等操作。下面,我们将以MySQL数据库为例,介绍Python如何将数据插入数据库的具体操作步骤。

1.安装MySQL Driver

在Python中连接MySQL需要安装相应的MySQL Driver。目前,Python使用MySQL的驱动有几种,比较常用的有:

(1)pymysql:一个纯Python实现的MySQL驱动,速度相对于其它MySQL驱动较快。

(2)MySQLdb:Python对MySQL的接口,使用C语言实现的 MySQL API。

(3)PyMySQLcursors:一个比较新的Python MySQL数据库连接库,其API类似于MySQLdb。

在本文中,我们将使用pymysql进行操作。

2.连接数据库

在插入数据之前,我们需要先连接到MySQL数据库。可以通过以下代码实现数据库的连接:

import pymysql

# 打开数据库连接

db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test')

# 使用cursor()方法获取操作游标 

cursor = db.cursor()

这里使用pymysql提供的connect()方法连接到MySQL数据库,并指定连接参数,比如主机名、端口、用户名、密码等。然后获取操作游标cursor()。

3.插入数据

假设我们现在需要将一些学生信息插入到students表中,可以使用该表的insert语句向数据库中插入数据。插入数据的步骤如下:

(1)将需要插入的数据加入sql语句中。

(2)通过cursor.execute()方法执行相应的sql语句。

(3)通过db.commit()方法提交数据。

具体的代码实现如下:

import pymysql

# 打开数据库连接

db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test')

# 使用cursor()方法获取操作游标 

cursor = db.cursor()

# SQL 插入语句

sql = "INSERT INTO students(name, gender, age, major) VALUES ('Tom', 'male', 18, 'Computer Science')"

try:

   # 执行sql语句

   cursor.execute(sql)

   # 提交到数据库执行

   db.commit()

except:

   # 如果发生错误则回滚

   db.rollback()

# 关闭数据库连接

db.close()

在上述代码中,我们构造了一个插入语句sql,使用cursor.execute()方法执行sql并将数据插入到数据库表中。其中,try语句块内部的代码用于提交数据,如果发生错误则通过except语句由db.rollback()方法进行回滚。最后,使用db.close()方法关闭数据库连接。

4.多条数据插入

在实际操作中,通常需要将多条数据一次性插入到数据库中,这时我们需要将多个数据的插入语句拼接到一起,再调用cursor.executemany()方法来实现批量插入。

下面,我们给出一个将多条数据插入到数据库表中的示例代码。在这个code中,我们使用pandas和numpy模块生成了一些随机学生记录数据:

import pymysql

import pandas as pd

import numpy as np

# 随机生成10条学生数据

data = pd.DataFrame({'name': ['Tom', 'Peter', 'Lily', 'Lucy', 'John', 'Emily', 'Mary', 'James', 'David', 'Lisa'],

                     'gender': ['male', 'male', 'female', 'female', 'male', 'female', 'female', 'male', 'male', 'female'],

                     'age': np.random.randint(18, 25, 10),

                     'major': ['Computer Science', 'Mathematics', 'Physics', 'Biology', 'Computer Science', 'Mathematics',

                               'Physics', 'Biology', 'Computer Science', 'Mathematics']})

# 数据库连接参数

conn = {'host': 'localhost', 'port': 3306, 'user': 'root', 'passwd': 'password', 'db': 'test'}

# 打开数据库连接

db = pymysql.connect(**conn)

# 使用cursor()方法获取操作游标 

cursor = db.cursor()

# 批量插入数据

for row in data.itertuples():

    cursor.execute(f"INSERT INTO students VALUES (null, '{row.name}', '{row.gender}', {row.age}, '{row.major}')")

# 提交数据

db.commit()

# 关闭数据库连接

db.close()

在代码中,我们使用pandas和numpy模块生成10条学生数据,并将其存储在pandas的DataFrame对象data中。然后,使用for循环对data中的每个元组进行遍历,在循环内部使用字符串格式化的方式拼接插入语句进行批量插入。

总结

本文介绍了Python连接MySQL数据库,并实现了对数据的插入操作。在实际操作中,我们还需要注意MySQL中各个类型的数据应该存储到相应的数据类型中,比如字符串应该存储到VARCHAR、TEXT类型中,数字类型应该存储到INT、FLOAT类型中等。另外,还需要注意比较常见的SQL注入问题,防范潜在的安全风险。为此,我们在实现时需要参考Python中更多的API和文档,尽可能做到更为严谨的开发。