包安装
pip install tpf 填写配置,返回oracle/mysql数据库连接, 方便使用,简单对用户隐藏密码
跨用户调用设置
比如使用root用户安装,却想要非root用户使用,那么需要对一个文件授权 chmod 666 db.db -rw-rw-rw-. 1 root root 594 Aug 3 04:02 db.db
设置密码:管理员角色设置
from tpf.db import reset_passwd db_dict = { "report.username":"case", "report.password":"rootroot", "report.url":"192.168.67.220:1521/case", "case.username":"case", "case.password":"rootroot", "case.url":"192.168.67.220:1521/case", "ora3.username":"case", "ora3.password":"rootroot", "ora3.url":"192.168.67.220:1521/case", "db1.username":"automng", "db1.password":"Automng_123", "db1.host":"192.168.56.104", "db1.port":13301, "db1.database":"db1", "db1.charset":"utf8", "db2.username":"automng", "db2.password":"Automng_123", "db2.host":"192.168.56.104", "db2.port":13301, "db2.database":"db1", "db2.charset":"utf8", } reset_passwd(db_dict=db_dict)
操作数据库:使用者
from tpf.db import DbConnect import pandas as pd class Sql(): create_acc=""" CREATE TABLE if not exists acc( id bigint(11) NOT NULL AUTO_INCREMENT primary key COMMENT '主键', c_acc bigint(19), c_datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '提交时间', index(c_acc)); """ class Db(DbConnect): """数据库操作 """ def __init__(self) -> None: super().__init__() def create(self): """创建表 """ # 默认db1 with self.mysql() as connection: cursor = connection.cursor() cursor.execute(Sql.create_acc) connection.commit() cursor.close() def ora_table_stuct(self,table_name): sql = """ select column_name,data_type,DATA_LENGTH From all_tab_columns where table_name=upper('{}') """.format(table_name) print(sql) res = "" col = [] # report库 with self.reportdb() as connection: cursor = connection.cursor() query = cursor.execute(sql) col = [c[0] for c in cursor.description] res = query.fetchall() data = pd.DataFrame(res,columns=col) cursor.close() # connection.commit() return data def ora_table_stuct2(self,table_name): sql = """ select column_name,data_type,DATA_LENGTH From all_tab_columns where table_name=upper('{}') """.format(table_name) print(sql) res = "" col = [] # 名称为case的oracle库 with self.oradb(name="case") as connection: cursor = connection.cursor() query = cursor.execute(sql) col = [c[0] for c in cursor.description] res = query.fetchall() data = pd.DataFrame(res,columns=col) cursor.close() # connection.commit() return data def show_mysql_version(self): sql = """ SELECT VERSION() """ print(sql) res = "" col = [] # 默认db1 with self.mysql() as connection: cursor = connection.cursor() cursor.execute(sql) # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("数据库连接成功,version =",data[0]) cursor.close() # connection.commit() return data def show_mysql_version2(self): sql = """ SELECT VERSION() """ print(sql) res = "" col = [] # 名称为db2的mysql库 with self.mysql(name="db2") as connection: cursor = connection.cursor() cursor.execute(sql) # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("数据库连接成功,version =",data[0]) cursor.close() # connection.commit() return data def show_mysql_version3(self): """获取连接,手工关闭 """ sql = """ SELECT VERSION() """ print(sql) res = "" col = [] connection = self.mysql(name="db2") print("connection:",connection) cursor = connection.cursor() cursor.execute(sql) # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("数据库连接成功,version =",data[0]) cursor.close() connection.close() return data def mysql_select(self, sql): res = "" col = [] with self.mysql() as connection: cursor = connection.cursor() cursor.execute(sql) col = [c[0] for c in cursor.description] # res type list # res[0] type tuple res = cursor.fetchall() data = pd.DataFrame(res,columns=col) cursor.close() # connection.commit() return data def to_mysql(self): sql = """ insert into db1.students(student_id,student_name)values(%s,%s); """ value_list = [(100006,'扁鹊他大哥'),(100007,'扁鹊他二哥')]; with self.mysql() as connection: cursor = connection.cursor() insert_row_num = cursor.executemany(sql,value_list) connection.commit() print ("影响行数=",insert_row_num) cursor.close() return insert_row_num mi = Db() mi.show_mysql_version() mi.ora_table_stuct(table_name="students") mi.ora_table_stuct2(table_name="students")