一看就会系列之本地和服务器上配置 SQL Server 与 MySQL 数据库,如何使用图形化工具管理它们

Flask 后端与 SQL Server/MySQL 数据库集成指南

1. 数据库安装与运行

1.1 Windows 本地使用 Docker

  • SQL Server (Docker):可在 Windows 上安装 [Docker Desktop],然后通过 docker run 启动 SQL Server 容器。例如:

    docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pass@word' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
    

    以上命令启动了一个 SQL Server 2019 容器,将宿主机的 1433 端口映射到容器的 1433 端口,可通过 sa 用户和指定密码进行连接。

  • MySQL (Docker):拉取官方 MySQL 镜像后,执行:

    docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
    

    该命令运行了一个 MySQL 容器,将宿主机 3306 端口映射到容器 3306。启动后可使用 root/123456 登录 MySQL 服务。

1.2 Linux 服务器部署

  • Docker 方式:Linux 服务器同样可使用上述 docker run 命令部署容器,并确保开放对应端口(1433、3306)。

  • 直接安装方式

    • MySQL:在 Ubuntu 上可使用包管理安装:sudo apt-get update && sudo apt-get install mysql-server。安装完成后,可运行 sudo mysql_secure_installation 设置 root 密码和安全选项。

    • SQL Server (Linux):可参考微软官方文档进行安装。以 Ubuntu 为例,可运行:

      curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -  
      curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list | sudo tee /etc/apt/sources.list.d/mssql-server.list  
      sudo apt-get update  
      sudo apt-get install mssql-server  
      sudo /opt/mssql/bin/mssql-conf setup
      

      mssql-conf setup 过程中设置 SA 密码并接受 EULA。安装后使用 sudo systemctl start mssql-server 启动服务,并可 sudo systemctl enable mssql-server 设为开机自启。

2. 数据库图形化管理

  • SQL Server Management Studio (SSMS):微软官方工具,仅支持 Windows。打开 SSMS,在“服务器名称”中输入 主机名,端口(本地容器可填写 localhost,1433),使用 sa 用户和密码登录。
  • MySQL Workbench:官方跨平台工具。新建连接时填写 Host(本地容器可用 127.0.0.1)、Port(通常为 3306)、Username (root) 和 Password。例如容器已映射到宿主机 3306 端口,则 Host 可填 127.0.0.1
  • DBeaver:开源通用数据库管理工具,支持 MySQL、SQL Server 等多种数据库。新建连接时选择对应数据库类型,输入主机、端口、数据库名、用户名和密码。
  • 连接提示:连接 Docker 容器时,Host 通常为本机地址(如 127.0.0.1localhost),端口为容器映射的端口号。远程连接数据库时,Host 应填写服务器公网/IP 地址,并确保服务器的防火墙或安全组已开放相应端口(1433/3306)。

3. Flask 连接数据库

  • MySQL (PyMySQL):先安装驱动 pip install pymysql。在 Flask 应用中可直接使用 PyMySQL 连接。示例代码:

    import pymysql
    conn = pymysql.connect(
        host='localhost', user='root', password='123456',
        db='testdb', port=3306, charset='utf8mb4'
    )
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM table_name")
    results = cursor.fetchall()
    

    如所示,使用 pymysql.connect 并提供主机、用户、密码、数据库名等参数即可建立连接。然后使用 cursor.execute() 执行 SQL,用 cursor.fetchall()cursor.fetchone() 获取查询结果。

  • MySQL (mysql-connector-python):先安装 pip install mysql-connector-python。代码示例:

    import mysql.connector
    conn = mysql.connector.connect(
        host='localhost', user='root', password='123456',
        database='testdb', port=3306, charset='utf8mb4'
    )
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM table_name")
    records = cursor.fetchall()
    

    通过 mysql.connector.connect 提供相应参数来连接 MySQL,然后类似地使用游标执行查询并获取结果。

  • SQL Server (PyODBC):安装 pip install pyodbc,并确保系统已安装对应的 SQL Server ODBC 驱动(Windows 下安装 “ODBC Driver 17 for SQL Server”;Linux 下可 sudo apt-get install msodbcsql17)。示例:

    import pyodbc
    conn = pyodbc.connect(
        'DRIVER={ODBC Driver 17 for SQL Server};'
        'SERVER=localhost,1433;DATABASE=testdb;UID=sa;PWD=YourPassword'
    )
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM table_name")
    rows = cursor.fetchall()
    

    connect 字符串中指定驱动、服务器地址(带端口)、数据库和登录凭据即可建立连接。之后同样使用 cursor.execute()cursor.fetchall() 获取数据。

  • SQL Server (pymssql):安装 pip install pymssql。示例:

    import pymssql
    conn = pymssql.connect(
        server='localhost', user='sa', password='YourPassword',
        database='testdb', port=1433, charset='utf8'
    )
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM table_name")
    data = cursor.fetchall()
    

    pymssql.connect 的参数类似,上面代码给出了连接本机 1433 端口 SQL Server 的示例。取回数据同样使用游标的 fetch 方法。

  • Flask-SQLAlchemy 配置:也可使用 SQLAlchemy ORM。示例配置:

    from flask_sqlalchemy import SQLAlchemy
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/testdb'
    db = SQLAlchemy(app)
    

    或连接 SQL Server:

    app.config['SQLALCHEMY_DATABASE_URI'] = (
        'mssql+pyodbc://sa:YourPassword@localhost:1433/testdb?'
        'driver=ODBC+Driver+17+for+SQL+Server'
    )
    db = SQLAlchemy(app)
    

    配置好之后,可直接使用 db.session.execute(...) 或 ORM 模型进行查询。以上连接字符串格式参考 SQLAlchemy 官方文档。

4. 常见问题与调试方法

  • 网络与端口:首先确认数据库容器或服务已启动(docker psdocker logs)。检查端口映射或监听:容器需使用 -p 参数映射端口,服务器需开放端口(Windows 防火墙、Linux iptables 或云安全组)。连接时确保使用正确的主机地址和端口(本地可用 localhost:端口,远程用服务器 IP)。
  • 权限问题:MySQL 默认禁止 root 远程登录,如有需要可设置环境变量 MYSQL_ROOT_HOST=% 或为普通用户授权;也需确保提供的用户名和密码无误。SQL Server 默认启用 sa 用户,密码须符合复杂度要求。出现“Access denied”或登录失败时,应检查用户权限、密码是否正确,以及数据库本身是否存在指定的库和表。
  • 字符编码:若查询结果出现乱码,检查数据库和连接是否使用同一字符集。MySQL 常见需要在连接时指定 charset='utf8mb4' 以支持中文或特殊符号,并确保数据库表采用 UTF-8 编码。SQL Server 常用 NVARCHAR 存储 Unicode,PyODBC 及 pymssql 默认会自动处理 Unicode,如果有问题可尝试设置 charset 参数或 text_factory(对 SQLite 有用)。
  • 驱动和依赖:使用 PyODBC 时,确保服务器和客户端安装了相同版本的 ODBC 驱动。Linux 上用 PyODBC 时需要先安装 msodbcsql17 等包。pymssql 依赖 freetds 库(Ubuntu 可 sudo apt-get install freetds-bin freetds-dev)。如果出现“Driver not found”或“模块错误”,一般是对应驱动未安装或版本不匹配。
  • 调试建议:可使用命令行工具独立验证连接。比如用 mysql -h host -P port -u user -psqlcmd -S server,port -U sa 等工具测试网络和凭据是否有效。查看错误信息:Connection refused 常为网络/端口问题,Access denied 为账号权限问题。利用 docker logs、数据库日志文件或开启 SQLAlchemy 的 echo=True 都有助于排查问题。
  • 其他注意事项:Docker 容器重启后未持久化数据,生产环境需使用数据卷(Volume)挂载数据库数据目录。确保操作系统时钟、时区一致,以避免时间戳或缓存失效问题。生产环境下还需考虑备份、安全配置(SSL/TLS 连接、最小化权限等)。

以上内容涵盖了在 Windows 和 Linux 环境下部署 SQL Server/MySQL,以及在 Flask 应用中连接和操作数据库的常见步骤与示例,初学者可根据本指南进行实践和调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值