下面是一个完整的示例,展示如何构建一个 MySQL 容器,并使用 Python 脚本将数据保存到数据库中。
- 启动 MySQL Docker 容器
首先,确保 Docker 已经安装。然后打开终端或命令提示符,运行以下命令来拉取 MySQL Docker 镜像并启动容器:
docker pull mysql:latest
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -p 3306:3306 -d mysql:latest
- 安装 Python MySQL 客户端
确保 Python 已安装,然后使用 pip 安装 mysql-connector-python:
yum install pip
pip install mysql-connector-python
- 编写 Python 脚本保存数据
编写一个名为 save_data.py 的 Python 脚本,该脚本连接到 MySQL 容器并将数据保存到数据库中。
vim save_data.py
import mysql.connector
from mysql.connector import errorcode
# 配置数据库连接
config = {
'user': 'root',
'password': 'my-secret-pw',
'host': '127.0.0.1',
'port': 3306,
'database': 'mydb',
'raise_on_warnings': True
}
# 数据要插入
data_to_insert = [
('example_name1', 'example_value1'),
('example_name2', 'example_value2')
]
# 创建连接
try:
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
# 创建表(如果不存在)
create_table_query = (
"CREATE TABLE IF NOT EXISTS data ("
" id INT AUTO_INCREMENT PRIMARY KEY,"
" name VARCHAR(255) NOT NULL,"
" value VARCHAR(255) NOT NULL"
") ENGINE=InnoDB")
cursor.execute(create_table_query)
# 插入数据
insert_data_query = "INSERT INTO data (name, value) VALUES (%s, %s)"
cursor.executemany(insert_data_query, data_to_insert)
# 提交事务
cnx.commit()
# 查询数据
cursor.execute("SELECT * FROM data")
for (id, name, value) in cursor:
print(f"ID: {id}, Name: {name}, Value: {value}")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("用户名或密码错误")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("数据库不存在")
else:
print(err)
else:
cursor.close()
cnx.close()```
4. 运行 Python 脚本
确保 MySQL 容器正在运行,然后在终端中运行 Python 脚本:
```python save_data.py```
5. 验证数据保存成功
脚本运行后,你应该能够看到插入的数据打印到终端中。如果需要进一步验证,可以进入 MySQL 容器并手动查询数据:
```docker exec -it my-mysql mysql -uroot -pmy-secret-pw mydb```
在 MySQL 提示符中,运行以下命令:
```SELECT * FROM data;```
![](/i/l/?n=24&i=blog/3445191/202406/3445191-20240605194005348-1203621822.png)
这将显示数据库中的数据,验证数据已成功插入。
通过以上步骤,你可以成功构建 MySQL 容器,并使用 Python 脚本将数据保存到 MySQL 数据库中。
标签:Python,数据库,MySQL,cursor,mysql,Mysql,data
From: https://www.cnblogs.com/muxinq/p/18233652