python访问mysql
# -*- coding: UTF-8 -*- import time import phoenixdb import psycopg2 import pymysql from urllib.parse import urlparse """ 将数据库的连接信息组装成一个connection对象 """ class Connection(object): def __init__(self, conn_type, host, port, schema, username, password): self.host = host self.port = port self.conn_type = conn_type self.schema = schema self.username = username self.password = password # 从jdbc_url构造connection @classmethod def create(cls, url: str, username=None, password=None): result = urlparse(url[5:]) if url.startswith('jdbc:') else urlparse(url) conn_dict = {'host': result.hostname, 'port': result.port, 'conn_type': result.scheme, 'schema': result.path[1:], 'username': username, 'password': password} return cls(**conn_dict) def __str__(self): return self.__dict__ def __repr__(self): return str(self.__str__()) @property def jdbc_url(self): return "jdbc:{conn_type}://{host}:{port}/{schema}?useCompression=true&socketTimeout=1200000".format( **self.__dict__) # 连接数据库和数仓 class DbConnCursor(object): def __init__(self, conn_type, host, port, schema, username, password): if conn_type.upper() == 'MYSQL': self.conn = pymysql.connect(host=host,port=port,user=username,password=password,database=schema,connect_timeout=31536000) elif conn_type.upper() == 'POSTGRESQL': self.conn = psycopg2.connect(host=host, port=port, user=username, password=password, database=schema) elif conn_type.upper() == 'HBASE': self.conn = phoenixdb.connect("http://{host}:{port}".format(host=host, port=port), autocommit=True) self.cur = self.conn.cursor() # 通过传入一个conn对象构造db_cursor @classmethod def create(cls, conn: Connection): return cls(**conn.__dict__) def __enter__(self): return self.cur def __exit__(self, exc_type, exc_value, exc_trace): self.conn.commit() self.cur.close() self.conn.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗