python怎么连windows数据库

老刘

Python怎么连Windows数据库?一篇讲清楚连接方法、配置步骤和常见坑

很多人第一次做 Python 和 Windows 数据库联动时,都会卡在这几个地方:
数据库到底是装在本机,还是局域网另一台 Windows 服务器上?
Python 要装什么驱动?
连接字符串怎么写?
为什么明明账号密码没错,就是连不上?

如果你的关键词是“python怎么连windows数据库”,那先说结论:
Python 连接 Windows 上的数据库,核心就三步:

  1. 先确认数据库类型,比如 MySQL、SQL Server、Access、SQLite。
  2. 安装对应的 Python 驱动,不同数据库用不同库。
  3. 写对连接参数,包括地址、端口、用户名、密码、数据库名。

下面按最常见的场景,手把手讲清楚。


一、先弄明白:Windows数据库到底指什么?

“Windows数据库”这个说法比较宽泛,实际常见的有下面几种:

  • SQL Server:Windows 环境里最常见,企业和办公系统用得很多。
  • MySQL / MariaDB:虽然不是 Windows 专属,但也经常装在 Windows 机器上。
  • Access(.mdb / .accdb):很多老旧办公软件会用。
  • SQLite:本地文件型数据库,严格说不算服务器数据库,但 Python 连接最简单。
  • Oracle / PostgreSQL:也能装在 Windows 上,不过相对少一些。

所以,真正要解决“Python怎么连Windows数据库”,第一步不是写代码,而是先确认你要连的是哪一种数据库


二、最常见的几种连接方案


方案1:Python连接 SQL Server(Windows里最常见)

如果你用的是 SQL Server,推荐用 pyodbc,这是最常用、最稳的方式。

1)安装驱动

先安装 Python 库:

pip install pyodbc

然后确认电脑上装了 SQL Server 的 ODBC 驱动。
一般建议安装:

  • ODBC Driver 17 for SQL Server
  • ODBC Driver 18 for SQL Server

如果是 Windows 10 / 11,通常安装对应版本即可。

2)连接代码

import pyodbc

server = '127.0.0.1'
database = 'testdb'
username = 'sa'
password = '你的密码'

conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};'
    f'SERVER={server};'
    f'DATABASE={database};'
    f'UID={username};'
    f'PWD={password}'
)

cursor = conn.cursor()
cursor.execute("SELECT @@VERSION")
row = cursor.fetchone()
print(row[0])

conn.close()

3)如果是 Windows 本机的 SQL Server 实例

有时候 SQL Server 是这种形式:

  • localhost
  • .
  • 127.0.0.1
  • 电脑名\实例名

例如:

conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};'
    'SERVER=DESKTOP-ABC123\\SQLEXPRESS;'
    'DATABASE=testdb;'
    'Trusted_Connection=yes;'
)

这里用的是 Windows 身份验证,不需要写用户名密码。


方案2:Python连接 Windows 上的 MySQL

如果 Windows 上装的是 MySQL,最常见的库是 pymysqlmysql-connector-python

方法A:用 pymysql

安装:

pip install pymysql

代码:

import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    user='root',
    password='你的密码',
    database='testdb',
    port=3306,
    charset='utf8mb4'
)

cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
result = cursor.fetchone()
print(result)

conn.close()

方法B:用 mysql-connector-python

安装:

pip install mysql-connector-python

代码:

import mysql.connector

conn = mysql.connector.connect(
    host='127.0.0.1',
    user='root',
    password='你的密码',
    database='testdb'
)

cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print(cursor.fetchone())

conn.close()

方案3:Python连接 Access 数据库

如果你遇到的是 .mdb.accdb 文件,那大概率是 Access 数据库。

1)安装 pyodbc

pip install pyodbc

2)连接代码

import pyodbc

db_path = r'C:\Users\Public\Documents\test.accdb'

conn = pyodbc.connect(
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    rf'DBQ={db_path};'
)

cursor = conn.cursor()
cursor.execute("SELECT * FROM 表名")
rows = cursor.fetchall()

for row in rows:
    print(row)

conn.close()

注意

Access 连接最容易出问题的地方是:

  • Python 是 64 位,Access 驱动是 32 位
  • 或者反过来

位数必须匹配,不然会报驱动找不到。


方案4:Python连接 SQLite

SQLite 适合本地小项目,优点是不用装数据库服务。

1)Python自带支持,不用额外安装

import sqlite3

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
cursor.execute("INSERT INTO users (name) VALUES (?)", ("张三",))
conn.commit()

cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

conn.close()

2)适合什么场景

  • 小工具
  • 本地数据记录
  • 单机脚本
  • 测试环境

如果是多人同时访问,不建议拿 SQLite 当正式服务器数据库。


三、如果数据库装在另一台 Windows 电脑上,怎么连?

这个场景很常见。比如:

  • 数据库装在 Windows 服务器上
  • 你在自己电脑上用 Python 访问它

这时候不仅要写 Python 代码,还要检查网络和数据库设置。

1)先确认数据库服务开启了远程访问

以 SQL Server 为例,要确认:

  • SQL Server 服务已启动
  • 开启了 TCP/IP
  • 允许远程连接
  • 防火墙放行数据库端口

SQL Server 默认端口一般是:

  • 1433

MySQL 默认端口一般是:

  • 3306

2)检查 Windows 防火墙

如果防火墙没放行,局域网里也连不上。

SQL Server 放行端口思路

在 Windows 防火墙中放行:

  • TCP 1433

MySQL 放行端口思路

放行:

  • TCP 3306

如果你不方便配置端口,也可以先临时关闭防火墙测试。
如果关闭后能连上,问题基本就锁定在防火墙规则上。


3)测试网络是否通

在你的电脑上先测试:

ping 数据库服务器IP

如果 ping 不通:

  • 先看 IP 是否写错
  • 是否在同一网段
  • 路由器是否限制访问
  • 是否服务器禁用了 ping 响应

然后测试端口是否通:

PowerShell 可用:

Test-NetConnection 192.168.1.100 -Port 1433

如果 TcpTestSucceeded : True,说明端口通了。


四、连接数据库时最常见的报错和解决办法


1)报错:找不到驱动

常见于 SQL Server 的 pyodbc 连接。

原因

  • 没装 ODBC Driver
  • 驱动名字写错
  • Python 位数和驱动不匹配

解决

先查看本机已安装的驱动:

import pyodbc
print(pyodbc.drivers())

然后把连接字符串里的驱动名改成列表中实际存在的名字。


2)报错:Access denied / Login failed

原因

  • 用户名密码错
  • 账号没权限
  • SQL Server 只开了 Windows 身份验证
  • 数据库名写错

解决

检查:

  • 账号是否真的能登录数据库
  • SQL Server 是否启用了 混合模式
  • 数据库是否允许该用户访问

3)报错:Can’t connect to server / timeout

原因

  • IP 写错
  • 端口没开
  • 防火墙拦截
  • 数据库服务没启动
  • 服务器没开远程访问

解决

按顺序排查:

  1. ping 服务器
  2. Test-NetConnection 测端口
  3. 检查数据库服务
  4. 检查防火墙
  5. 检查数据库是否允许远程连接

4)报错:字符乱码

原因

  • 数据库编码和 Python 字符集不一致

解决

MySQL 建议写:

charset='utf8mb4'

SQL Server 一般注意使用正确的字段类型和 Nvarchar,避免中文乱码。


五、推荐你直接照抄的通用写法

如果你是新手,不知道到底怎么开始,建议按这个思路:

1)先确认数据库类型

  • SQL Server
  • MySQL
  • Access
  • SQLite

2)再安装对应库

  • SQL Server:pyodbc
  • MySQL:pymysql
  • Access:pyodbc
  • SQLite:sqlite3(自带)

3)再写连接代码

先只做一件事:
能成功连接并执行一条简单查询。

例如:

SELECT 1

或者:

SELECT VERSION()

先验证连通,再做增删改查。


六、一个实战示例:Python连接SQL Server并查询数据

下面给你一个完整点的例子,适合直接参考。

import pyodbc

try:
    conn = pyodbc.connect(
        'DRIVER={ODBC Driver 17 for SQL Server};'
        'SERVER=127.0.0.1;'
        'DATABASE=testdb;'
        'UID=sa;'
        'PWD=123456'
    )
    cursor = conn.cursor()
    cursor.execute("SELECT TOP 5 * FROM users")
    rows = cursor.fetchall()

    for row in rows:
        print(row)

except Exception as e:
    print("连接失败:", e)

finally:
    if 'conn' in locals():
        conn.close()

这个写法有几个好处:

  • 有异常捕获
  • 出错时能直接看到原因
  • 适合调试阶段使用

七、如果你是企业环境,建议这样做

如果数据库是正式环境,不建议直接裸连,最好注意这些:

1)不要把密码写死在代码里

可以改用:

  • 环境变量
  • 配置文件
  • 密钥管理工具

2)给数据库账号最小权限

只开放必须的权限,比如:

  • 只读账号
  • 只允许某个库
  • 只允许某些表

3)开启备份

特别是 SQL Server、MySQL 这种正式数据库,备份一定要做:

  • 全量备份
  • 增量备份
  • 异地备份

4)远程访问要限制来源IP

不要把数据库端口完全暴露给全网。


八、总结:Python连Windows数据库怎么选

如果你只想快速上手,可以直接按下面选:

  • SQL Server:用 pyodbc
  • MySQL:用 pymysql
  • Access:用 pyodbc
  • SQLite:用 sqlite3

如果你连的是 Windows 上远程数据库,记住三个关键点:

  1. 数据库服务要开启远程访问
  2. 防火墙要放行端口
  3. Python连接字符串要写对

九、最适合新手的入门顺序

如果你现在完全是小白,建议按这个顺序练:

  1. 先在本机装一个 SQLite,学会连接
  2. 再连 MySQL 或 SQL Server
  3. 再练远程连接另一台 Windows 电脑上的数据库
  4. 最后学习事务、连接池、ORM、权限控制

这样最稳,不容易一上来就被驱动、端口、防火墙、权限这些问题劝退。


十、可直接套用的关键词思路

如果你后续要继续搜索或写相关内容,可以围绕这些词展开:

  • Python 连接 SQL Server 教程
  • Python 连接 MySQL 数据库 Windows
  • Python 连接 Access 数据库
  • Python 数据库连接失败解决方法
  • Windows 远程连接数据库配置
  • Python pyodbc 使用教程
  • Python 数据库驱动安装方法

这些词都很适合做延伸内容,也更容易把问题讲透。


如果你要的是某一种数据库的具体连接代码,比如“Python连接SQL Server”或者“Python连接MySQL”,我可以直接给你一份可复制运行的完整示例

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,3人围观)

还没有评论,来说两句吧...

目录[+]