Docker 中的 SQL Server

在软件开发和数据管理领域,数据库是不可或缺的一部分。SQL Server 是一种流行的关系型数据库管理系统,由 Microsoft 开发和维护。而 Docker 是一个开源的容器化平台,能够轻松地构建、部署和管理应用程序。本文将介绍如何在 Docker 中使用 SQL Server,并提供相应的代码示例。

Docker 简介

Docker 是一个用于开发、交付和运行应用程序的开源平台。它通过容器化技术,将应用程序及其所有依赖项打包在一起,形成一个可移植的容器。这个容器可以在任何环境中运行,无论是开发人员的笔记本电脑、测试服务器还是生产环境。

使用 Docker 可以实现快速、可重复的部署,提供了更高的灵活性和可扩展性。它还能够优化资源利用,减少部署成本。因此,越来越多的组织和开发者选择使用 Docker 来构建和管理他们的应用程序。

在 Docker 中运行 SQL Server

要在 Docker 中运行 SQL Server,首先需要安装 Docker 并确保其正常运行。接下来,需要从 Docker Hub 下载 SQL Server 的镜像。可以通过以下命令来下载 SQL Server 2019 的镜像:

docker pull mcr.microsoft.com/mssql/server:2019-latest

下载完成后,可以使用以下命令来运行 SQL Server 容器:

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 --name sql_server_container -d mcr.microsoft.com/mssql/server:2019-latest

上述命令中的 ACCEPT_EULASA_PASSWORD 分别用于接受 SQL Server 的使用协议和设置管理员密码。将 SA_PASSWORD 替换为您自己的密码。

一旦容器启动成功,就可以使用 SQL Server Management Studio 或其他 SQL Server 客户端工具连接到容器中的 SQL Server 实例。连接字符串如下所示:

Server=127.0.0.1,1433;Database=<YourDatabase>;User Id=sa;Password=<YourStrong!Passw0rd>

示例代码

下面是一个简单的示例代码,演示如何使用 Docker 中的 SQL Server。首先,我们需要安装 pyodbc 包,这是一个用于连接到 SQL Server 的 Python 包。

pip install pyodbc

接下来,我们可以使用以下代码连接到 SQL Server 数据库并执行一些基本操作:

import pyodbc

# 连接到 SQL Server 数据库
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=127.0.0.1,1433;DATABASE=TestDB;UID=sa;PWD=<YourStrong!Passw0rd>')

# 创建游标
cursor = cnxn.cursor()

# 创建表
cursor.execute('CREATE TABLE Employees (Id INT, Name VARCHAR(255))')
cnxn.commit()

# 插入数据
cursor.execute("INSERT INTO Employees (Id, Name) VALUES (?, ?)", 1, 'John Doe')
cnxn.commit()

# 查询数据
cursor.execute("SELECT * FROM Employees")
rows = cursor.fetchall()
for row in rows:
    print(row)

# 关闭连接
cursor.close()
cnxn.close()

上述代码首先连接到 SQL Server 数据库,然后创建了一个名为 Employees 的表,并插入了一条数据。接下来,使用 SELECT 语句查询数据,并打印出结果。最后,关闭连接。

类图

下面是一个简单的类图示例,演示了连接到 SQL Server 数据库的类结构:

classDiagram
    class SqlConnection {
        + connect(connectionString: str): None
        + close(): None
        + cursor(): Cursor
    }

    class Cursor {
        + execute(query: str, *args: Any): None
        + fetchall(): List[Tuple[Any, ...]]
        + commit(): None
        + close(): None
    }

    SqlConnection --> Cursor

在上述类图中,SqlConnection 类表示与 SQL Server 数据库的连接。它具有 connect 方法用于连接数据库,close 方法用于关闭连接,