如何在PyCharm中结合Python与SQL文件实现数据库连接?
帮你理清SQL数据库配置的问题
嘿,作为SQL新手碰到这种“文件和代码不匹配”的情况太正常了,我先帮你理清楚核心矛盾,再给你两种可行的解决方案:
先搞懂一个关键冲突
你的data.sql里的语法是MySQL专属的(比如那个/*!40100 DEFAULT CHARACTER SET latin1 */是MySQL的版本条件注释,建库写法也完全符合MySQL规范),但你拿的Python代码用的是pyodbc——这个库主要是用来连SQL Server或者微软系数据库的,两者根本不搭。所以首先得选好你要用哪种数据库:
方案1:跟着data.sql用MySQL(更省心,不用改SQL文件)
这种情况完全不需要搭SQL Server,咱们用MySQL就行,步骤超简单:
1. 先装MySQL服务器
去MySQL官网下社区版服务器(免费的),跟着安装向导走就行,记得设置好root用户的密码,别忘啦。
2. 在PyCharm里跑data.sql建库建表
- 打开PyCharm,点右边侧边栏的
Database工具(要是没显示,就去顶部菜单View > Tool Windows > Database打开它)。 - 点左上角的
+号,选MySQL,然后填连接信息:主机填localhost,端口默认3306,用户名是root,密码就是你装MySQL时设的那个,然后点Test Connection测一下能不能连上。 - 连成功之后,右键点你的MySQL连接,选
Run SQL Script,选中你的data.sql文件,点运行——这样里面的建库、建表、插数据就全搞定了!
3. 修改Python代码适配MySQL
原来的代码用的pyodbc不适合MySQL,咱们换个专门的库,先在PyCharm的Terminal里装库:
pip install mysql-connector-python
然后把代码改成这样(记得替换成你的用户名和密码):
import mysql.connector import time def connectToDB(): connection = None while connection is None: try: # 这里替换成你的MySQL用户名、密码 connection = mysql.connector.connect( host="localhost", user="root", password="你的MySQL密码", database="network" ) except Exception as e: print(f"[DB connector] 连接出错啦: {e}。1秒后重试...") time.sleep(1) return connection
方案2:硬要用SQL Server(适配你给的Python代码)
如果你铁了心要用上那段pyodbc的代码,那得改data.sql的语法,还要装SQL Server,步骤如下:
1. 装SQL Server Express版(免费)
去微软官网下SQL Server Express,安装时选「混合模式认证」,给sa用户设个密码,记住它。
2. 在PyCharm里配置SQL Server并改SQL脚本
- 打开Database工具,点
+号选Microsoft SQL Server,主机填localhost\SQLEXPRESS(默认实例名),用户名sa,密码是你刚设的,测试连接。 - 把
data.sql改成SQL Server能认的语法,比如开头改成这样:
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'network') BEGIN CREATE DATABASE network; END GO USE network; GO -- 后面的CREATE TABLE也要改,比如MySQL的AUTO_INCREMENT要换成IDENTITY(1,1),字符集设置也不一样,得对应调整
然后运行修改后的脚本。
3. 配置ODBC数据源(让Python代码能连上)
你的Python代码里写的是DSN=data,所以得创建这个数据源:
- 打开Windows的「ODBC数据源管理器(64位)」(因为PyCharm一般是64位的),切到「系统DSN」标签,点「添加」。
- 选
SQL Server Native Client,数据源名称填data,服务器选localhost\SQLEXPRESS,下一步选SQL Server认证,输入sa和密码,默认数据库选network,完成配置。 - 回到PyCharm,确保装了pyodbc(没装的话在Terminal跑
pip install pyodbc),那原来的代码就能正常用啦。
给新手的小建议
如果你完全是刚入门,强烈推荐选方案1(MySQL),因为你的data.sql已经写好MySQL语法了,不用改脚本,上手更快,学习成本也低。
内容的提问来源于stack exchange,提问作者francosy




