Python接入不同类型数据库的通用接口方法

Python接入不同类型数据库的通用接口方法,第1张

日常数据管理工作中,需要处理存储在不同类型数据库系统的数据。对这些数据的管理,常见的是使用Navicat,DBeaver等管理工具。在对大量数据分析时,需要提取到Python/R中进行处理。下面 探索 Python调用MySQL,MongoDB,InfluxDB等多种类型数据库通用连接方法。实现方式是在Python中封装各类数据库接口包。

实现后的效果:1.安全。接口信息封装便于保密管理;2.复用。一次封装,永久复用;3.上手快。方便不熟悉python和数据调用的同学,只会简单的sql即可使用,省时省力。

下面以MySQL,MongoDB,InfluxDB为例定义接口方法,然后把它们封装成1个通用方法。

mysql_get(sql,db):

mongo_get(sql,db):

influx_get(sql,db):

可以看到,以上函数共同调用的参数为sql和db。我们再增加一个参数db_type,将构造一个通用的方法对以上数据库调用。

同理,其他类型的数据库也可以加入到这个通用框架中,包括但不限于各类关系型,键值型,时序型数据库。

主要分为八个模块:

企业实时数据库:EI;

数据采集接口:IO;

实时数据应用:Package;

实时数据发布服务器:Portal;

管控数据集成:ERPConnect;

实时数据报表:Report;

实时数据挖掘:DataDig;

开放式接口:OPCServer For EI、API开发包;

您好,您这样:

package com.tgb.lk.demo.model

import com.tgb.lk.ahibernate.annotation.Column

import com.tgb.lk.ahibernate.annotation.Id

//此处没有加Table属性,它是其他类的基类,本类中用@Column注解的字段在子类中同样会被创建到表中.

public class Person {

@Id

@Column(name = "id")

private int id// 主键,int类型,数据库建表时此字段会设为自增长

@Column(name = "name", length = 20)

private String name// 名字长度一般不会超过20个字符吧,length=20数据字段的长度是20

@Column(name = "age", type = "INTEGER")

private int age// 年龄一般是数值,用type = "INTEGER"规范一下吧.

// //假设您开始时没有此属性,程序开发中才想到此属性,去掉代码注释试试吧,数据库增删改查不用修改任何代码哦.

// @Column(name = "sex")

// private String sex

// 有些字段您可能不希望保存到数据库中,不用@Column注释就不会映射到数据库.

private String noSaveFild

//get和set方法.

//....

@Override

public String toString() {

return "id=" + id + ", name=" + name + ",age=" + age

}

}<span style="font-size:18px">

</span>

Teacher.java

[java] view plaincopy

package com.tgb.lk.demo.model

import com.tgb.lk.ahibernate.annotation.Column

import com.tgb.lk.ahibernate.annotation.Table

//自动生成的建表语句:

//crate table [t_teacher]: CREATE TABLE t_teacher (id INTEGER primary key autoincrement, title TEXT, name TEXT(20), age INTEGER )

@Table(name = "t_teacher")

public class Teacher extends Person {

@Column(name = "title")

private String title// 职称

//get和set方法.

//....

@Override

public String toString() {

return "Teacher [" + super.toString() + ",title=" + title + "]"

}

}<span style="font-size:18px">

</span>

Student.java

[java] view plaincopy

package com.tgb.lk.demo.model

import com.tgb.lk.ahibernate.annotation.Column

import com.tgb.lk.ahibernate.annotation.Table

//自动生成的建表语句:

//CREATE TABLE t_student (id INTEGER primary key autoincrement, classes TEXT, teacher_id INTEGER, name TEXT(20), age INTEGER )

@Table(name = "t_student")

public class Student extends Person {

@Column(name = "teacher_id")

private int teacherId// 班主任id

@Column(name = "classes")

private String classes// 班级

//get和set方法

//...

@Override

public String toString() {

return "Student [" + super.toString() + ",teacherId=" + teacherId

+ ", classes=" + classes + "]"

}

}<span style="font-size:18px">

</span>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6778957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存