SQLAlchemy 支持特殊字符

postgresql 实践
pydantic 实践(一)基础
pydantic 实践(二)数据校验
SQLAlchemy 介绍与实践
SQLAlchemy 支持特殊字符

SQLAlchemy 支持特殊字符

  • 1. 字符集介绍分析
  • 2. MySQL 支持特殊字符
    • 2.1. 更新 MySQL 字符集为 utf8mb4
    • 2.2 更新已存在数据库的字符集
      • 2.2.1. 更新数据库字符集
      • 2.2.2. 更新数据表字符集
      • 2.2.3. 更新列的字符集
    • 2.3. 验证 MySQL 是否成功支持特殊字符
  • 3. SQLAlchemy 支持 utf8mb4
    • 3.1. 设置引擎编码方式为 utf8mb4
    • 3.2. 设置数据库表编码方式为 utf8mb4

✋✊✌️❤️⭐️✨⚡️☀️☁️❄️☔️☕️✈️⚓️⌚️☎️⌛️✉️✂️✒️✏️❌♻️✅❎Ⓜ️

为什么 MySQL 默认不支持 Emoji 表情
数据库字符集指的是数据库中存储的字符的编码方式。常见的字符集包括 utf8、utf8mb4、latin1等。字符编码是将字符映射为计算机中的二进制数据的方式。
MySQL 数据库默认使用 utf8 字符集,该字符集最多只支持3字节的字符编码。因此,当存储4字节字符(如 Emoji 表情)时,MySQL 会将其存储为乱码或截断。
Emoji 表情是一种特殊的字符,它的编码超过了utf8 字符集所能表示的范围,需要使用 utf8mb4 字符集才能正确存储和处理。

1. 字符集介绍分析

参考:https://blog.csdn.net/AggressionStorm/article/details/100040588
utf8_general_ci 不区分大小写,这个在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个就会照成不良后果。
utf8_bin: compare strings by the binary value of each character in the string 将字符串每个字符串用二进制数据编译存储,区分大小写,而且可以存二进制的内容。
utf8_unicode_ci 校对规则仅部分支持 Unicode 校对规则算法,一些字符还是不能支持。
utf8_unicode_ci 比较准确,utf8_general_ci 速度比较快。通常情况下 utf8_general_ci 的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是 utf8_general_ci,所以新建数据库时一般选用 utf8_general_ci 就可以了

2. MySQL 支持特殊字符

参考:
https://blog.csdn.net/lsoxvxe/article/details/133953726
https://blog.csdn.net/AsuraDong/article/details/82227659

2.1. 更新 MySQL 字符集为 utf8mb4

首先,需要编辑 MySQL 的配置文件(my.cnf或my.ini),将默认字符集设置为 utf8mb4。在配置文件中找到以下配置项,并修改为:

[client]
default-character-set = utf8mb4[mysql]
default-character-set = utf8mb4[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

保存修改后的配置文件,并重启 MySQL 服务,使配置生效。

sudo service mysql restart

2.2 更新已存在数据库的字符集

2.2.1. 更新数据库字符集

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

2.2.2. 更新数据表字符集

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.2.3. 更新列的字符集

ALTER TABLE table_name MODIFY column_name column_type CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.3. 验证 MySQL 是否成功支持特殊字符

CREATE TABLE emoji_test (id INT PRIMARY KEY AUTO_INCREMENT,emoji VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);INSERT INTO emoji_test (emoji) VALUES ('');

3. SQLAlchemy 支持 utf8mb4

参考:https://www.cnblogs.com/jassin-du/p/8987170.html
官网:https://www.osgeo.cn/sqlalchemy/orm/declarative_tables.html

3.1. 设置引擎编码方式为 utf8mb4

engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/sqldb01?charset=utf8mb4")

3.2. 设置数据库表编码方式为 utf8mb4

class UserType(Base):__tablename__ = 'usertype'id = Column(Integer, primary_key=True)caption = Column(String(50), default='管理员')# 添加配置设置编码__table_args__ = {'mysql_charset':'utf8mb4', 'mysql_collate':'utf8mb4_unicode_ci'}

这样生成的 SQL 语句就自动设置数据表编码为 utf8mb4了,__table_args__还可设置存储引擎、外键约束等等信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何看待职场中的“向上管理”

向上管理的本质,是提供一份更精确的人力产品说明书, 利用市场的逻辑,引导领导,按照你的心意,使用你这款产品。 公司获得更高的产出,领导获得更多的成果,你获得了自由支配的时间, 这是一场正和博弈。 ​ 图片来源:网络 (1)具体案例: 把自己当成一款产品,使用者…

AIOHTTP

文章目录 AIOHTTP主要特点库安装在一个命令中安装所有加速 入门客户端示例服务器示例: 开发模式aiohttp 3 有什么新功能?依赖关系 客户端快速入门发起请求在 URL 中传递参数响应内容和状态码二进制响应内容JSON 请求 注意JSON 响应内容流式响应内容更复杂…

JavaFX基础- Button 的基本使用

说明 本文记录一下对Button的基本使用,包括但不限于 样式的设置,事件的监听等。 按钮样式的设置 方式一 : Java代码的方式 // 创建一个按钮Button button new Button("按钮");// 设置按钮的位置button.setLayoutX(50);button.set…

DeepSeek-R1国产大模型实战:从私有化部署到内网穿透远程使用全攻略

文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近,国产AI界的黑马——Deepseek,简直火得一塌糊涂。不过…

openwrt24.10.0版本上安装istoreOS的屏幕监控插件

lcdsimple 插件支持在软路由下面显示统计信息到 HDMI 或者 VGA 上。 手动安装方法: 保证 quickstart 版本大于 0.9.7 安装 lcdsimple 具体方法: opkg update opkg install quickstart opkg install lcdsimple 手动下载 QUICKSTART 跟 LCD SIMPLE&…

卷积神经网络 - ResNet(残差网络)

残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边 (Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。 这是一种特殊的深度神经网络结构,由 Kaiming He 等人在 2015 年提出,目的是解…

质因数个数--欧拉函数中统计纯素数

和互质数不同&#xff0c;这里统计的是纯素数部分 就是x/i那一部分 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> PII; int n,m,k; ll eular(ll x) { ll an0;ll px;for(ll i2;i*i<x;i){if(x%i…

2025年3月电子学会c++五级真题

结绳 #include <bits/stdc.h> using namespace std;int n,a[10010];int main() {cin>>n;for(int i 0;i<n;i){cin>>a[i];}sort(a0,an);//将a数组从小到大排序double sum 0;for(int i 0;i<n;i){sum (suma[i])/2;}cout<<(int)sum;return 0; } 最…

用Nginx实现负载均衡与高可用架构(整合Keepalived)

前言 在分布式架构中&#xff0c;负载均衡和高可用是保障系统稳定性的两大核心能力。本文将深入讲解如何通过Nginx实现七层负载均衡&#xff0c;并结合Keepalived构建无单点故障的高可用架构。文末附完整配置模板&#xff01; 一、Nginx负载均衡实现方案 1. 核心原理 Nginx通…

springBoot与ElementUI配合上传文件

以下是使用Vue CLI创建的Vue项目&#xff0c;结合Element UI来实现文件上传功能的完整示例。 步骤 创建Vue项目&#xff1a;确保你已经安装了Vue CLI&#xff0c;若未安装&#xff0c;可使用以下命令安装&#xff1a; npm install -g vue/cli然后创建一个新的Vue项目&#x…

黑盒测试的测试用例构成的八点要素

测试用例: 是为测试项目而设计的执行文档 作用&#xff1a; 防止漏测实施测试的标准 编写格式&#xff1a; 用例编号:项目 模块 编号用例标题:预期结果(测试点)模块/项目:所属项目或模块优先级:表示用例的重要程度或者影响力P0~p4(P0最高)前置条件:要执行此条用例&#xf…

蓝桥刷题note11(好数)

1&#xff0c;好数 一个整数如果按从低位到高位的顺序&#xff0c;奇数位 (个位、百位、万位 ⋯⋯ ) 上的数字是奇数&#xff0c;偶数位 (十位、千位、十万位 ⋯⋯ ) 上的数字是偶数&#xff0c;我们就称之为 “好数”。 给定一个正整数 NN&#xff0c;请计算从 1 到 NN 一共…

Keil编译生成的axf文件的介绍

在 Keil 开发环境&#xff08;如 Keil MDK&#xff09;中&#xff0c;.axf 文件是一种 可执行文件格式&#xff0c;主要用于 ARM 处理器的嵌入式开发。它的作用类似于 ELF&#xff08;Executable and Linkable Format&#xff09;格式&#xff0c;包含了可执行代码、调试信息、…

C#:第一性原理拆解属性(property)

目录 第一步&#xff1a;从最基本的需求出发 第二步&#xff1a;引入控制需求 第三步&#xff1a;优化访问方式 第四步&#xff1a;剖析属性的本质 第五步&#xff1a;进一步简化和演化 第六步&#xff1a;总结属性的第一性原理 我们用第一性原理&#xff08;First Prin…

-PHP 应用文件上传函数缺陷条件竞争二次渲染黑白名单JS 绕过

#学习前必读&#xff1a; 1 、课前一定要明白&#xff1a; 无文件解析安全问题上&#xff0c;格式解析是一对一的&#xff08;不能 jpg 解析 php &#xff09; 换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析 2 、文件上传安全指的是攻击者通过利用上传…

C++的模板(十四):更多的自动内存管理

在前文《C的模板(八)&#xff1a;子系统》class DMM&#xff0c;给出了一个自动动态内存管理的例子。https://blog.csdn.net/aaasssdddd96/article/details/139921880 它使用了一个list容器&#xff0c;把两个类型兼容的指针存放在一起。在new的时候&#xff0c;随即就把得到的…

Windows下VSCode的安装

前言 VSCode的安装看起来平平无奇&#xff0c;但也不是轻轻松松的。笔者将最新的Windows下安装VSCode&#xff0c;以及运行最简单的C程序的过程记录下来&#xff0c;供后续的自己和大家参考。 一、官网下载安装包 Visual Studio Code - Code Editing. Redefined 二、安装 直接…

Matlab教程004:Matlab矩阵的拼接重构重排以及矩阵的运算

文章目录 1.4.3 矩阵的拼接重构重排1.4.3.1 横向拼接1.4.3.2 纵向拼接1.4.3.3 矩阵的重构重排 1.4.4 矩阵的运算1.4.4.1 算数运算1.4.4.2 矩阵加减1.4.4.3 矩阵乘法1.4.4.4 矩阵转置 1.4.3 矩阵的拼接重构重排 1.4.3.1 横向拼接 A和B的行数相同&#xff0c;那么使用[A,B]、[A …

Python小练习系列 Vol.3:生成有效括号组合(回溯 + DFS)

&#x1f9e0; Python小练习系列 Vol.3&#xff1a;生成有效括号组合&#xff08;回溯 DFS&#xff09; &#x1f44b; 本期我们来刷一道 LeetCode 热门经典题&#xff0c;借此掌握回溯算法的精髓 —— 生成有效括号组合&#xff0c;是学习递归 & DFS 的黄金题型&#xff…

实战经验深度解析 | 博睿数据制造行业精选案例集发布!

近年来&#xff0c;我国制造业加速迈向高端化、智能化、绿色化&#xff0c;为经济高质量发展注入新动能。放眼全球&#xff0c;制造业正加速数字化、智能化转型&#xff0c;5G、人工智能、边缘计算等技术与生产全流程深度融合&#xff0c;有力推动柔性化生产与产业链协同创新发…