Skip to main content

Easy-to-use ORM for database operations with lazy table reflection

Project description

kepler-atlas

基于sqlalchemy的python数据库orm包,加入对交互式编程的支持,更简易的API。

注意

自动补全功能在ipython>7.1.1的版本下会出现卡顿现象,如果需要,请回滚至该本版或以下。

安装

pip install kepler-atlas

使用方法

建表

from kepler.atlas import DataBase
from sqlalchemy import create_engine

engine = create_engine('mysql://....')
# or
engine = 'mysql://....'

# 实例化
db = DataBase(engine, schema=None)

from sqlalchemy import Column, Integer, String

# 构建User类
class User(db.Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    fullname = Column(String(20))
    password = Column(String(20))

    def __repr__(self):
        return "<User(name='%s', fullname='%s', password='%s')>" % (
            self.name, self.fullname, self.password)

# 建表
db.create_all()

更多api用法可参考python对Mysql操作和使用ORM框架(SQLAlchemy)

# database下以TABLE_NAME为表名的Table类
# TABLE_NAME为任意该database下存在主键的表
table = db.TABLE_NAME

# 表TABLE_NAME下以COLUMN为列名的Column类
table.COLUMN

# 继承了sqlalchemy的Query,支持同样方法
# 返回实例化对象序列
db.query(table).filter(table.COLUMN==....).all() 

# 返回DataFrame
db.query(table).filter(...).to_df()

增/改 (适用于逐条增改)

# 增
t_obj_add = table(c1=xxx, c2=xxx, c3=xxx)
db.update(t_obj_add)
db.commit()

# 改
t_obj_update = db.query(table).filter(...).all()
for t in t_obj_update:
    t.c1 = xxx
db.update(t_obj_update)
db.commit()

# 或者一起搞
# 构建一个iterable对象
t_change = [t_obj_add] + t_obj_update
db.update(t_change)
db.commit()

# 或者另外一种模式
db.query(table).filter(...).update({table.c1: "hello"}, synchronize_session=False)
db.commit()

批量插入

import pandas as pd
df = pd.DataFrame(...)
# 批量插入支持DataFrame格式 或 list of dicts [{'xx': ...}, ..., {}]
# ignore默认为True,如果存在唯一性索引,会忽略重复键错误
# 解决了pandas中 if_exist='append'中重复插入报错的问题
db.insert(table, df, ignore=True)
db.commit()

# 删
t_obj_delete = db.query(table).filter(...).first()
db.delete(t_obj_delete)
db.commit()

# 或者另外一种模式
db.query(table).filter(...).delete()
db.commit()

ipython or jupyter-notebook

实例化Database类后,kepler-atlas会自动为该实例添加以表名命名的属性,这点在交互式编程中十分方便。

需要注意的是,该属性为懒加载,并不会一次性将database下的所有表映射成Table类,只有在单独调用时才会映射对应的表,解决了性能问题。

tables

columns

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kepler_atlas-0.1.4.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kepler_atlas-0.1.4-py3-none-any.whl (26.1 kB view details)

Uploaded Python 3

File details

Details for the file kepler_atlas-0.1.4.tar.gz.

File metadata

  • Download URL: kepler_atlas-0.1.4.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for kepler_atlas-0.1.4.tar.gz
Algorithm Hash digest
SHA256 2d950af11cdfa3a150514f3ea3877789c71216657cf9ae7b416f85f85a61e9fa
MD5 5cc53ea4f5ef9f8a1d84c47a926cc40e
BLAKE2b-256 02465deefcf9af715802f25209eb70a707a9c9ce410fd1781a6580168aac7459

See more details on using hashes here.

File details

Details for the file kepler_atlas-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: kepler_atlas-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 26.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for kepler_atlas-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 55d2b6a4264f2b672a5ecf704d3f87f275b043047c5d7b3c1c0efb02eeaa2d2f
MD5 e52d1fbeff45fa47e505175d69f09fca
BLAKE2b-256 65fbf31254f954da7be8ced083c5ae92e12c4d72248d874eb993880b8946989f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page