日常数据管理工作中,需要处理存储在不同类型数据库系统的数据。对这些数据的管理,常见的是使用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>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)