首页 > 数据库 >Python中使用sqlalchemy操作数据库遇到密码包含@的处理方法

Python中使用sqlalchemy操作数据库遇到密码包含@的处理方法

时间:2023-11-09 12:11:50浏览次数:52  
标签:sqlalchemy Python 数据库 pymysql 密码 abc IP地址

欺骗性的oracle12514错误,这就有问题了,努力方向就不对了。。。

密码包含@的处理方法

使用sqlalchemy操作数据库的时候,遇到密码中包含@的时候会报错。因为它是通过@来链接IP地址的,遇到密码里有@就跟语法里的@混乱分不清了。编辑器就会报错。

比如下面这个例子:

用户名:XXXXX
密码:123@abc
IP地址:127.0.0.1
数据库端口:3306
数据库名:test_database

con_info = 'mysql+pymysql://XXXXX:123@[email protected]:3306/test_database?charset=utf8'

# 语法:con_info ='mysql+pymysql://数据库用户:密码@IP地址:端口/数据库名?charset=utf8'

密码里有个@,语法中固定有一个@,会根据@进行拼接,这样就会导致运行到密码里的@的时候,代码就认为后边应该是IP地址了。但实际上那只是密码里的一个字符而已。

用上述方法连接数据库会报错:

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, 'Can\'t connect to MySQL server on \'abc"@127.0.0.1\' ([Errno 8] nodename nor servname provided, or not known)')

@符号导致的解析问题

如何解决?

使用python的urllib库中提供编码方法,代码如下

from urllib.parse import quote_plus as urlquote

host="127.0.0.1"
port=3306
user="XXXXX"
password="123@abc"
db_name="test_database"
con_info = f'mysql+pymysql://{user}:{urlquote(password)}@{host}:{port}/{db_name}?charset=utf8


作者:羋学僧
链接:https://www.jianshu.com/p/c386ece68085
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:sqlalchemy,Python,数据库,pymysql,密码,abc,IP地址
From: https://www.cnblogs.com/cinemaparadiso/p/17819418.html

相关文章

  • Python多线程爬取数据代码模版
    由于对爬虫Ip信息的理解可能存在偏差,我将假设你想要爬取的网站支持Python多线程运行数据。以下是一个简单的Haskell爬虫程序,用于爬取Python多线程跑数据的内容:importNetwork.HTTPimportNetwork.URIimportData.ListimportData.MaybeimportControl.Monad--爬虫爬虫Ip信息......
  • 数据库(Oracle)序列(Sequence)的基本使用
    1.Sequence定义在Oracle中可以用SEQUENCE生成自增字段。Sequence序列是Oracle中用于生成数字序列的对象,可以创建一个唯一的数字作为主键。2.为什么要用Sequence你可能有疑问为什么要使用序列?不能使用一个存储主键的表并每次递增吗?或者将列设置为AUTOINCREMENT?如果使用一......
  • 从 SQL 查询优化技巧去看 h2 数据库查询原理 | 京东物流技术团队
    本文目标是:了解查询的核心原理,对比SQL查询优化技巧在h2database中的落地实现。前提:为了贴近实际应用,本文CodeInsight基于BTree存储引擎。数据查询核心原理数据库实现查询的原理:遍历表/索引,判断是否满足where筛选条件,添加到结果集。简单通用。对于选择表还是索引、如何遍历......
  • Python逐行读取文件常用的三种方法!
    在Python中,读取文件是非常普遍的操作,而逐行读取文件则是最常见的需求。那么Python如何逐行读取文件?为大家介绍常用的三种方法,一起来看看吧。1、使用readline()方法逐行读取文件在Python中,我们可以使用readline()方法逐行读取文件。该方法用于读取文件的一行内容,并将文......
  • 彻底掌握Python中 * 号
    Python中的*号是一个特殊的符号,在其他编程语言中,它最广为人知的用途就是作为乘法运算的符号。而在Python中,它的用途远不止如此。本文总结了Python中*号的所有用途,以供参考。1.算术运算号用来做算术运算几乎是所有编程语言采用的方法,在Python中,号可作为乘法运算和指数运算。......
  • linux/docker 版 Sql Server新建的数据库插入中文乱码问题解决方案
    SqlServer插入遇到乱码原因:在英文系统中,SqlServer默认排序规则为英文字典顺序解决方案一:容器版SqlServer,在创建容器时,可以加上环境变量-eMSSQL_COLLATION=Chinese_PRC_CI_AS-eTZ=Asia/Shanghai 把排序规则设为中文字典顺序并忽略大小写区分重音,时区设置为上海,不然......
  • 高版本SqlServer数据库还原到低版本数据库
    需求:SqlServer2017还原到SqlServer2008数据库直接备份还原与拷贝文件还原均无法成功解决方案:1、修改兼容性,再备份数据库,还原(推荐)2、导出脚本、导入(即数据同步),大数据量不建议使用该方法......
  • cmd输入python弹出windows应用商店的问题
    一、环境操作系统:windows10Python:3.11(最开始是3.7)二、起因pip要求升级结果无论是在cmd还是pycharm的控制台都没反应于是我就在cmd输入python发现打开的居然是windows的appstore,我还以为是我的python坏了就安装了3.11.结果涛声依旧。于是我就问了问度娘有了答案,就是删除微软app......
  • 【misc】[HNCTF 2022 Week1]python2 input(JAIL) --沙盒逃逸,python2环境
    查看附件,这次有点不太一样,这次是python2的环境只有一个input函数,但是python2的input函数可是不太一样:在python2中,input函数从标准输入接收输入,并且自动eval求值,返回求出来的值在python2中,raw_input函数从标准输入接收输入,并返回输入字符串在python3中,input函数从标准输入接收输......
  • Python学习笔记:必应壁纸下载
    GitHub上开源的必应壁纸API作为数据来源。--1.开源地址https://github.com/zenghongtu/bing-wallpaper--2.请求接口https://bingw.jasonzeng.dev/一、接口使用说明1.API接口:https://bingw.jasonzeng.dev2.分辨率resolution默认分辨率为:1920×1080,其他可设置参数......