首页 > 编程语言 >Python解析DB URI

Python解析DB URI

时间:2024-08-23 11:25:51浏览次数:10  
标签:Python DB charset db URI uri port password parsed

数据库配置信息一般包含数据库类型、数据库服务器地址、端口号、用户名、密码、要链接的数据库,以及一些选项等,例如
通常我们需要配置多个变量来完成整个配置,如

db_type = 'mysql'
host = 'localhost'
port = 3306
user = 'root'
password = 'passw0rd'
db = 'testdb'
charset = 'utf8'
# ...

也可以按URI格式通过一个字符串给出,例如

mysql://root:passw0rd@localhost:3306/testdb?charset=utf8
postgres://postgress@localhost/testdb?sslmode=false

其中,密码、端口号、数据库,以及选项参数可以为空

使用正则解析DB URI

不支持解析?chaset=utf8

import re

PATTEN = r'(?P<db_type>\w+?)://(?P<user>\w+?):(?P<password>\w+?)@(?P<host>.*?):(?P<port>\d+?)/(?P<db>\w+)'

db_uri = 'mysql://root:passw0rd@localhost:3306/testdb'

r = re.match(PATTEN, db_uri)
if r:
    db_type = r.group('db_type')
    user = r.group('user')
    password = r.group('password') or None
    host = r.group('host')
    port = int(r.group('port') or 3306)
    db = r.group('db') or None
    print(host, port, user, password, db)

使用urlparse解析DB URI

from urllib.parse import urlparse, parse_qs

db_uri = 'mysql://root:passw0rd@localhost:3306/testdb?charset=utf8'

parsed_uri = urlparse(db_uri)
db_type = parsed_uri.scheme
user = parsed_uri.username
password = parsed_uri.password
host = parsed_uri.hostname
port = int(parsed_uri.port or 3306)
db = parsed_uri.path.lstrip('/')

charset = 'utf8'
if parsed_uri.query is not None:
    charset = parse_qs(parsed_uri.query).get('charset', [None])[0]

print(host, port, user, password, db, charset)

标签:Python,DB,charset,db,URI,uri,port,password,parsed
From: https://www.cnblogs.com/superhin/p/18375667

相关文章

  • 用Python实现9大回归算法详解——09. 决策树回归算法
    1.决策树回归的基本概念决策树回归(DecisionTreeRegression)是一种树状结构的回归模型,通过对数据集进行递归分割,将数据分成更小的子集,并在每个子集上进行简单的线性回归。决策树的核心思想是通过选择特征及其阈值来最大化每次分裂后的目标函数增益,从而找到使误差最小化的模型......
  • Python下载安装全流程(Python 最新版本),新手小白必看!
    第一次接触Python,可能是爬虫或者是信息AI开发的小朋友,都说Python语言简单,那么多学一些总是有好处的,下面从一个完全不懂的Python的小白来安装Python等一系列工作的记录,并且遇到的问题也会写出,让完全不懂的小白也可上手安装,并且完成第一个Helloworld代码。需要安装包......
  • python socket编辑示例 UDP
    服务端:fromsocketimportsocket,AF_INET,SOCK_DGRAMrecv_socket=socket(AF_INET,SOCK_DGRAM)recv_socket.bind(('127.0.0.1',8888))whileTrue:data,addr=recv_socket.recvfrom(1024)#接收数据print('客户说:',data.decode('......
  • Python3测试mysql插入数据代码(chatgpt生成)
      实现的功能:先连接mysql数据库,然后读取某个目录所有以txt文件命名后缀的json内容文件,解析出对应的key和value,然后插入数据到mysql数据库,最后关闭数据库连接 importosimportjsonimportpymysqlimportre"""尝试插入json文件到MySQL数据库。dbInfo:MySQL数据库......
  • 零基础学习人工智能—Python—Pytorch学习(八)
    前言本文介绍卷积神经网络的上半部分。其实,学习还是需要老师的,因为我自己写文章的时候,就会想当然,比如下面的滑动窗口,我就会想当然的认为所有人都能理解,而实际上,我们在学习的过程中之所以卡顿的点多,就是因为学习资源中想当然的地方太多了。概念卷积神经网络,简称CNN,即Convoluti......
  • Python-批量统计MySQL中表的数据量
    背景在数据中台中,有时为了核对数据,需要每天批量统计MySQL数据库中表的数据量,但是DMS中没有周期调度功能。MySQL创建表--统计的表清单CREATETABLE`dws_table_list`(`table_name`varchar(255)DEFAULTNULL,`flag`varchar(255)DEFAULTNULL);--每天的数据量CRE......
  • python socket编辑示例
    服务端代码:fromsocketimportsocket,AF_INET,SOCK_STREAM#1.创建socket对象AF_INET:用于internet之间的进程通信,SOCK_STREAM:表示TCP协议server_socket=socket(AF_INET,SOCK_STREAM)#2.绑定ip和端口号ip='127.0.0.1'port=8888server_socket.bind((ip,p......
  • 基于Python flask的图书借阅管理系统的设计与实现
    基于PythonFlask的图书借阅管理系统旨在为图书馆或类似机构提供一个高效、便捷的管理平台,覆盖图书借阅的各个环节,帮助管理员和读者更好地管理和使用图书资源。该系统采用Python编程语言和Flask框架进行开发,结合了数据库管理、用户认证、数据可视化等技术,确保系统的功能完备和......
  • python-jose 实现fastapi登录验证
    JWT和Session的区别:JWT:JWT是一种无状态的认证机制。由于JWT令牌包含了用户的身份信息以及相关的元数据,服务端不需要存储任何用户状态信息,只需要验证JWT令牌的真实性和有效性即可。这使得JWT非常适合于构建无状态的分布式系统,因为JWT令牌可以在不同的服务之间轻松共享。Sessio......
  • Python正则表达式提取车牌号
    在Python中使用正则表达式(RegularExpressions)来提取车牌号是一个常见的任务,尤其是在处理车辆信息或进行图像识别后的文本处理时。中国的车牌号格式多种多样,但通常包含省份简称、英文字母和数字。以下是一个使用Python正则表达式来提取常见中国车牌号(包括新能源车牌)的示例代码。1......