python连接本地SQL server

嚴華  论坛元老 | 2025-4-16 05:22:07 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1724|帖子 1724|积分 5172

python连接本地SQL server

一.设置本地账号

1.新建用户

在对象资源管理其中,选中 安全性/登录名 右键新建登录名

在弹出的对话框中,设置登录名为“sa”(sa是最高权限用户名,也可以自界说,但不推荐),选择“SQL Server身份验证”,设置密码,在“默认数据库”中选择我们须要建立接洽的目标数据库,“默认语言”为简体中文。

最后在“状态”选项卡下选择“启用”并确保“允许连接”复选框被选中。

2.开启双重验证

在资源对象管理器中,右键单击SQL Server实例名称并选择“属性”。

在弹出的对话框中,选择“安全性”选项卡,将“身份验证”设置为“SQL Server和Windows身份验证模式”,并选择“确定”以生存更改。

3,开启TCP/IP本地服务

在SQL Server Configuration Manager中,右键“SQL Server网络配置”,选择“TCP/IP”协议,点击“启用”。

选择TCP/IP属性,选择IP,将“TCP动态端口”设置为0

然后找到“IPALL”选项,将“TCP端口”设置为1433(或其他的端口号)。

生存更改并重启SQL Server服务。

完成以上步骤后,即可使用Python连接本地SQL Server数据库。
二.python连接实例

注意,下文是本地连接用法,也就是只能连接本机服务器的数据库,想要连接外地服务器请参考别的文章。
以 Pycharm为例
1.下载支持库

有用pymssql的方法,但是我没成功,于是换了另一个用pyodbc的方法
进入Anaconda Prompt,进入已有情况,输入一下命令下载支持库(这里命令末端添加了阿里云镜像源,能下载的快一点)
  1. pip install pyodbc -i https://mirrors.aliyun.com/pypi/simple/
复制代码
2.验证连接

创建一个 .py文件,编辑以下代码验证能否建立连接:
  1. import pyodbc
  2. server = 'localhost'   # 这里就写localhost就可以了
  3. user = '之前创建的用户名'  
  4. password = '给对应账户设置的密码'
  5. database = '想要建立连接的数据库名'
  6. try:
  7.     conn_str = f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={user};PWD={password};TrustServerCertificate=yes'
  8.     connect = pyodbc.connect(conn_str)
  9.     print("连接成功")
  10. except pyodbc.Error as e:
  11.     print(f"连接失败: {e}")
复制代码
3.可能失败缘故原由

须要注意的是,如果没有创建sa账户的话,这里应该要先给对应数据库开起用户权限
在对象资源管理器中,右键对应数据库,点击属性,点击文件,点击如图红框

点击浏览,选中须要基于权限的用户,但是好像只能选择一个

如图,我选择了sd用户,点击确定,再点击确定就可以了。
最后显示连接成功:

三.基本查询语法使用

  1. import pyodbc
  2. server = 'localhost'   # 这里就写localhost就可以了
  3. user = '之前创建的用户名'  
  4. password = '给对应账户设置的密码'
  5. database = '想要建立连接的数据库名'
  6. conn_str = f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={user};PWD={password};TrustServerCertificate=yes'
  7. connect = pyodbc.connect(conn_str)
  8. print("连接成功")
  9. # 创建游标对象
  10. cursor = connect.cursor()
  11. # 执行查询语句,这里查询作者数据库里的图书表
  12. query = "SELECT * FROM 图书"
  13. cursor.execute(query)
  14. # 获取查询结果
  15. rows = cursor.fetchall()
  16. # 打印查询结果
  17. if rows:
  18.     print("图书表的数据如下:")
  19.     for row in rows:
  20.         print(row)
  21. # 关闭游标和连接
  22. cursor.close()
  23. connect.close()
复制代码
结果如下,没有乱码问题,不知道是不是引用库不一样的缘故原由,pymssql库看很多博主讲是有代码的,反正不管,能成功就行。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表