首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用pymsql在docker容器上连接到mariadb

在docker容器上使用pymsql连接到mariadb的步骤如下:

  1. 首先,确保已经安装了Docker和Docker Compose,并且已经启动了Docker服务。
  2. 创建一个新的目录,用于存放相关文件。
  3. 在该目录下创建一个名为docker-compose.yml的文件,并添加以下内容:
代码语言:txt
复制
version: '3'
services:
  mariadb:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./data:/var/lib/mysql
  python:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./app:/app
    depends_on:
      - mariadb

这个docker-compose.yml文件定义了两个服务:mariadbpythonmariadb服务使用了官方的mariadb镜像,并设置了root用户的密码。python服务将使用一个自定义的Dockerfile构建镜像,并将当前目录下的app目录挂载到容器的/app目录下。

  1. 在同一目录下创建一个名为Dockerfile的文件,并添加以下内容:
代码语言:txt
复制
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "your_script.py"]

这个Dockerfile文件指定了使用Python 3.9作为基础镜像,并将当前目录下的requirements.txt文件复制到容器的工作目录下。然后安装所需的依赖,并将当前目录下的所有文件复制到容器的工作目录下。最后,通过CMD指令运行你的Python脚本。

  1. 在同一目录下创建一个名为requirements.txt的文件,并添加以下内容:
代码语言:txt
复制
pymysql

这个requirements.txt文件列出了你的Python脚本所需的依赖,这里只有pymysql一个依赖。

  1. 在同一目录下创建一个名为your_script.py的Python脚本文件,并添加以下内容:
代码语言:txt
复制
import pymysql

# 连接到mariadb数据库
conn = pymysql.connect(
    host='mariadb',
    user='root',
    password='your_password',
    db='your_database',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor
)

# 执行SQL查询
try:
    with conn.cursor() as cursor:
        # 执行SQL语句
        sql = 'SELECT * FROM your_table'
        cursor.execute(sql)
        result = cursor.fetchall()
        print(result)
finally:
    conn.close()

这个Python脚本使用pymysql库连接到mariadb数据库,并执行一个简单的查询语句。你需要根据实际情况修改hostuserpassworddbyour_table等参数。

  1. 打开终端,进入到该目录,运行以下命令启动容器:
代码语言:txt
复制
docker-compose up -d

这个命令将根据docker-compose.yml文件创建并启动容器。

  1. 等待容器启动完成后,可以通过以下命令查看容器的日志输出:
代码语言:txt
复制
docker-compose logs -f

如果一切正常,你将看到Python脚本的输出结果。

通过以上步骤,你可以在docker容器上使用pymsql连接到mariadb数据库。请注意,这里只是一个简单的示例,实际应用中可能需要根据具体需求进行更多的配置和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券