Python 操作 MySQL 时解决字段名与关键字冲突及 % 符号处理

山间有风
山间有风
发布时间:2026-10-13| 4人浏览过
原创

本文介绍在 Python 调用 MySQL 时,如何处理字段名与数据库关键字冲突以及 SQL 中百分号(%)导致的报错。通过为字段名添加反引号避免关键字冲突,并将单个百分号替换为双百分号解决模糊匹配报错,提供完整的 Python 插入数据代码示例。

解决字段名与关键字冲突

在 Python 中操作 MySQL 数据库时,若字段名称与数据库保留关键字发生冲突,可通过在字段名两侧添加反引号(即键盘 ESC 键下方、数字 1 左侧的 ` 符号)来解决。

具体实现方式如下所示:

数据字段的设计结构如截图所示

需要插入的数据内容如下:


datas = {
  'sign_event':[
    {'id': 1, 'name': '华为mate9发布会' , 'limit': 100, 'status': 1, 'address': '会展中心1号厅', 'start_time': '2017-09-20 14:00:00','create_time':'2017-08-20 14:00:00'},
    {'id': 2, 'name': '华为P1000发布会' , 'limit': 200, 'status': 1, 'address': '会展中心2号厅', 'start_time': '2017-09-20 14:00:00','create_time':'2017-08-20 14:00:00'},
    {'id': 3, 'name': 'IPHONE888发布会' , 'limit': 300, 'status': 1, 'address': '会展中心3号厅', 'start_time': '2017-09-20 14:00:00','create_time':'2017-08-20 14:00:00'},
    {'id': 4, 'name': '半壁江山66演唱会' , 'limit': 400, 'status': 1, 'address': '会展中心4号厅', 'start_time': '2017-09-20 14:00:00','create_time':'2017-08-20 14:00:00'},
    {'id': 5, 'name': '金融P222222P上线' , 'limit': 500, 'status': 1, 'address': '会展中心5号厅', 'start_time': '2017-09-20 14:00:00','create_time':'2017-08-20 14:00:00'},
    {'id': 6, 'name': '未命名0000发布会' , 'limit': 600, 'status': 1, 'address': '会展中心6号厅', 'start_time': '2017-09-20 14:00:00','create_time':'2017-08-20 14:00:00'},
  ],
}

执行插入操作的 SQL 语句实现逻辑为:

1. 获取指定表的所有待插入数据


 for tablename,data in datas.items():
     for d in data:
       self.insert_datatable(tablename,d)
 self.close_dataConnetion()

2. 遍历每个表的数据,逐条循环插入到对应的表中


 def insert_datatable(self, tablename, table_data):
    keys = {}
    for key in table_data:
      # 从数据字段中取出列名,列名用反单引号括起来;--解决列名与mysql关键字冲突
      keys[key] = "`"+str(key)+"`"
      table_data[key] = "'"+str(table_data[key])+"'"
    key = ','.join(keys.values())
    value = ','.join(table_data.values())
 
    sql = "INSERT INTO " + tablename + " ( " + key + " ) VALUES ( " + value +" );"
    with self.connection.cursor() as cursor:
      cursor.execute('SET FOREIGN_KEY_CHECKS=0;') #取消外键约束
      cursor.execute(sql)
    self.connection.commit()

解决 SQL 中 % 符号冲突

补充拓展:Python 数据库操作中 % 符号冲突的解决方法

在使用 Python 后端调用 MySQL 数据库时,可能会遇到「%」关键字的冲突问题。例如,当使用 Python 后端读取 MySQL 记录并在 Impala 端执行涉及模糊匹配的 SQL 逻辑时,单个「%」符号会导致报错。

解决方法:将 SQL 逻辑中的单个「%」替换为「%%」即可解决该问题,这是一个实用的技巧。

以上关于 Python 操作 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 算法库。