Python使用PyMySQL向MySQL插入数据及端口配置报错排查

蓝鲸
蓝鲸
发布时间:2026-10-13| 4人浏览过
原创

本文通过Python使用PyMySQL库向MySQL数据库插入数据的实例,详细展示了标准代码结构。重点分析了一个常见陷阱:在建立数据库连接时,端口号(port)参数若被错误地加上引号导致类型不匹配,会引发难以定位的错误。通过对比调试过程,强调了参数类型必须严格符合API要求,特别是数值型端口不应加引号,以帮助用户避免此类低级错误。

PyMySQL插入数据标准代码示例

我们直接通过代码示例来了解具体实现。


from pymysql import *


def main():
  # 创建connection连接
  conn = connect(host='', port=3306, database='', user='',
          password='', charset='utf8')
  # 获取cursor对象
  cs1 = conn.cursor()
  # 执行sql语句
  query = 'insert into 表名(列名1, 列名2, 列名3, 列名4, 列名5, 列名6) values(%s, %s, %s, %s, %s, %s)'
  列名1 = 值1
  列名2 = 值2
  列名3 = 值3
  列名4 = 值4
  列名5 = 值5
  列名6 = 值6
  values = (列名1, 列名2, 列名3, 列名4, 列名5, 列名6)
  cs1.execute(query, values)

  # 提交之前的操作,如果之前已经执行多次的execute,那么就都进行提交
  conn.commit()

  # 关闭cursor对象
  cs1.close()
  # 关闭connection对象
  conn.close()


if __name__ == '__main__':
  main()

补充内容:记录一次学习PyMySQL插入数据时遇到的典型错误。

在学习Python进行简单的MySQL操作时,正确的代码实现如下所示:

常见错误排查:端口号类型问题


import pymysql.cursors
 
# 获取数据库连接
connection = pymysql.connect(
  host='xx.xx.xx.xx',
  port=3310,
  user='root',
  password='root',
  db='wiki'
)
 
try:
  #获取会话指针
  with connection.cursor() as cursor:
    # 创建sql语句
    sql = "insert into `user`(`name`,`age`,`sex`) values (%s,%s,%s)"
 
    # 执行sql
    cursor.execute(sql,("lisi",18,"f"))
    # cursor.execute(sql)
    # 提交
    connection.commit()
except:
  print("something wrong")
  db.rollback()
finally:
  connection.close()

然而,在运行过程中出现了一个令人困扰的问题,系统始终抛出如下错误信息:

起初怀疑是数据库连接建立环节的问题,但仔细检查后并未发现db赋值存在明显逻辑错误。随后注意到末尾的%d格式问题,直觉认为是插入数据时的赋值环节出错,但排查后依然未果。于是尝试将赋值直接硬编码到SQL语句中,例如执行"insert into `user`(`name`,`age`,`sex`) values ('zhangsan',18,'f')",本以为这样能避免参数传递问题,结果依然报错。由此排除SQL赋值本身的逻辑错误,重新审视db="wiki"这一行代码时,突然注意到port='3310'这一配置。联想到端口号是否不应添加引号,抱着尝试的心态去掉引号后,程序运行正常。

此时感到十分无奈。查看控制台报错信息,错误提示完全未指向port这一行。通常情况下,我们习惯在报错行及其下方代码中寻找原因,但这次错误却“跑”到了上面。

最终结论是:数据类型必须严格匹配,务必保持细心,引以为戒。

以上关于在Python中使用PyMySQL向MySQL数据库插入数据的实例分享完毕,希望能为读者提供参考,也欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。