目录
一、相关库
由于工作中需要用到pandas对数据库表的查询、计算、插入、删除等操作,需要使用Python连接数据库并进行操作,于是写了一个DataBase类,实现对MySQL、Gbase数据库的连接,用到的Python库主要是pymysql、psycopg2。
pymysql是一个纯Python实现的MySQL客户端库,用于连接和操作MySQL数据库。
安装方式:
pip install pymysql
psycopg2用于连接和操作PostgreSQL数据库,它是对libpq(PostgreSQL的C语言库)的封装,为Python提供了一个高效且功能丰富的接口来与PostgreSQL数据库进行交互。GBase作为基于PostgreSQL内核开发的数据库产品,自然也可以使用psycopg2进行连接。
安装方式:
pip install psycopg2
二、代码
python连接数据库并进行增删改查操作的代码如下所示:
如果需要连接其他数据库,只需要更改db_connection方法,例如连接sqlite数据库:sqlite3.connect('./test.db')。
import pandas as pd
import pymysql
import psycopg2
import logging
logger = logging.getLogger(__name__)
logger.info("Start print log")
class DataBase(object):
def __init__(self,db_type,host,user,password,database_name,port):
self.db_type = db_type
self.host = host
self.user = user
self.password = password
self.database_name = database_name
self.port = port
def db_connection(self):
if self.db_type=='mysql':
return pymysql.connect(
host=self.host,
user=self.user,
password=self.password,
database=self.database_name,
port=self.port,
charset="utf8")
elif self.db_type=='gbase':
return psycopg2.connect(
host=self.host,
user=self.user,
password=self.password,
database=self.database_name,
port=self.port)
else:
return None
# 批量插入
def insert_table_to_sql(self, sql, valuelist):
conn = self.db_connection()
cur = conn.cursor()
try:
cur.executemany(sql, valuelist)
conn.commit()
except Exception as e:
conn.rollback()
logger.error("插入数据失败:{}。错误:{}".format(sql,e))
finally:
cur.close()
conn.close()
# 查询数据库
def select_table_by_sql(self, sql):
try:
conn = self.db_connection()
cur = conn.cursor()
cur.execute(sql)
data = cur.fetchall()
columnDes = cur.description
columnNames = [columnDes[i][0] for i in range(len(columnDes))]
df = pd.DataFrame([list(i) for i in data], columns=columnNames)
return df
except Exception as e:
logger.error("查询数据失败:{}。错误:{}".format(sql,e))
return None
finally:
cur.close()
conn.close()
#增删改操作
def execute_sql(self, sql):
conn = self.db_connection()
cur = conn.cursor()
try:
cur.execute(sql)
conn.commit()
except Exception as e:
conn.rollback()
logger.error("SQL执行失败:{}。错误:{}".format(sql,e))
finally:
cur.close()
conn.close()
调用示例如下所示:
db = DataBase('pymysql','localhost','root','root','test',3306)
#查询
df = db.select_table_by_sql("select * from table_name")
#删除
db.execute_sql("drop table table_name")
#批量插入
data=tuple([tuple(i) for i in df.values])
sql = '''insert into table_name(id, name)
values (%s,%s)
'''
db.insert_table_to_sql(sql,data)
#切换GBase
db2 = DataBase('gbase','localhost','root','root','test',15400)
本文介绍了如何使用Python的pandas库配合pymysql和psycopg2连接MySQL和Gbase数据库,提供了连接、插入、查询、删除以及异常处理的代码示例,包括如何切换不同数据库类型的操作。
2850

被折叠的 条评论
为什么被折叠?



