Orator

Orator提供一个简单和方便的数据库数据处理库。

它的灵感来源于PHP的Laravel框架,借助其思想实现了python版的查询构造器和ORM。

这是完整的文档:http://orator-orm.com/docs

安装

你可以有两种不同的安装方式。

使用pip安装。

pip install orator

基本使用

配置

你需要开始配置数据库连接,及创建一个DatabaseManager实例。

from orator import DatabaseManager, Model

config = {

'mysql': {

'driver': 'mysql',

'host': 'localhost',

'database': 'database',

'user': 'root',

'password': '',

'prefix': ''

}

}

db = DatabaseManager(config)

Model.set_connection_resolver(db)

定义一个模型

class User(Model):

pass

在模型中定义__table__属性来确定表名。

class User(Model):

__table__ = 'my_users'

其次还可以定义__primary_key来确定主键,__connection__来确定连接。

如果你不希望默认创建updated_at和created_at字段,则将__timestamps__属性置为False。

查询模型所有数据

users = User.all()

通过主键查询数据

user = User.find(1)

print(user.name)

使用模型查询

users = User.where('votes', '>', 100).take(10).get()

for user in users:

print(user.name)

聚合查询

你可以使用查询构造器。

count = User.where('votes', '>', 100).count()

users = User.where_raw('age > ? and votes = 100', [25]).get()

分片查询

如果你希望一次查询一部分数据,则可以使用chunk方法。

for users in User.chunk(100):

for user in users:

# ...

指定数据库连接

在模型中,可以使用on方法指定数据库连接。

user = User.on('connection-name').find(1)

你还可以使用read/write指定只读或只写连接。

user = User.on_write_connection().find(1)

字段管理

当创建一个新的模型,通过构造函数给模型设置属性。

例如:在模型中设置__filltble或者__guarded__属性。

在模型中定义填充字段

这个__filltable__属性。

class User(Model):

__fillable__ = ['first_name', 'last_name', 'email']

在模型中定义禁止字段

这个__guarded__属性。

class User(Model):

__guarded__ = ['id', 'password']

禁止所有字段

__guarded__ = ['*']

插入、更新和删除

保存一个新的模型

在数据库中创建一个新的记录,使用save方法。

user = User()

user.name = 'John'

user.save()

在创建完成之后,可以这样获取到自增id。

inserted_id = user.id

使用create方法

# Create a new user in the database

user = User.create(name='John')

# Retrieve the user by attributes, or create it if it does not exist

user = User.first_or_create(name='John')

# Retrieve the user by attributes, or instantiate it if it does not exist

user = User.first_or_new(name='John')

更新数据

user = User.find(1)

user.name = 'Foo'

user.save()

你也可以这样更新数据。

affected_rows = User.where('votes', '>', 100).update(status=2)

删除数据

user = User.find(1)

user.delete()

通过主键删除数据

User.destroy(1)

User.destroy(1, 2, 3)

你还可以这样删除数据。

affected_rows = User.where('votes', '>' 100).delete()

仅仅更新时间

如果你想更新模型的时间,可以使用touch方法。

user.touch()

时间Timestamps

在这个模型中created_at和updated_at是在数据库中默认生成的。如果,你不希望创建这两个字段,你可以设置属性__timestamps__为false。

class User(Model):

__timestamps__ = False

提供自定义时间格式

如果,你希望自己定义时间格式,你可以这样操作。

class User(Model):

def get_date_format():

return 'DD-MM-YY'

python动态生成数据库表_Python版的数据库查询构造器、ORM及动态迁移数据表。相关推荐

  1. python构造器_Python短小精悍的Orator查询构造器

    查询构造器 介绍 这个数据库查询构造器,提供便利的接口可以创建和执行查询操作,可以在大多数数据库中使用. 查询select操作 查询表中所有的数据. users = db.table('users') ...

  2. 使用DB查询分析器实现异构数据源中数据表的相互访问

    1  引言   硕士程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本DB 查询分析器.英文版本<DB Query A ...

  3. python同步两张数据表_python 同步mysql数据库表

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. python处理数据库数据类型_python 导入表格数据库数据类型

    Django 博客开发教程 3 - 创建 Django 博客的数据库模型 设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个 ...

  5. python批量生成word报告_python自动生成word报告 | 如何将现有的数据利用python 填入word的表格中?...

    关于python连接SQL server数据库的问题? 你把完整的连接代码贴一下 如何将现有的数据利用python 填入word的表格中? VB,VBA我会,py不会哦 DB2教程推荐,新手想学习这个 ...

  6. python数据库实例_Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  7. python 销售数据分析输出表格_Python实现将数据库一键导出为Excel表格的实例

    Python实现将数据库一键导出为Excel表格的实例 下面小编就为大家带来一篇Python实现将数据库一键导出为Excel表格的实例.小编觉得挺不错的,现在就分享给大家, 数据库数据导出为excel ...

  8. python随机生成英文字符串_Python练习第六题,生成随机字母

    第六题:使用 Python 生成类似于下图中的字母验证码图片 1.思路:随机生成一位字母 参考文档string - 常用字符串操作stringstring.ascii_letters 小写字母 'ab ...

  9. python随机生成大写字母_python随机生成大小写字母数字混合密码(仅20行代码)

    用简单的方法生成随机性较大的密码 仅用20行代码随机生成密码 核心思路:利用random模块 random模块随机生成数字,大小写字母,循环次数 while循环+随机生成的循环次数-->随机pl ...

最新文章

  1. Linux修改文件权限为777
  2. 20155308 《信息安全系统设计基础》课程总结
  3. 为nginx创建windows服务自启动
  4. 畅通工程 HDU - 1863
  5. Windows 程序包管理器 1.0 正式发布
  6. laravel mysql 锁表_Laravel中MySQL的乐观锁与悲观锁
  7. javascript构造函数类和原型prototype定义的属性和方法的区别
  8. NanoDet:这是个小于4M超轻量目标检测模型
  9. python 字符串删除重复_leetcode No.1047 删除字符串中的所有相邻重复项
  10. JavaScript小效果的实现(笔记)
  11. 时钟服务器地址_时钟同步 Chrony 教程
  12. tcp_wrapper:简单的基于主机的访问控制工具
  13. mvvm绑定checkbox wpf_WPF(MVVM)菜单中的互斥(和可绑定)复选框
  14. 小鑫の日常系列故事(一)——判断对错
  15. C语言—俄罗斯方块(新手向)
  16. +initialize方法的调用时机
  17. 零基础学习大数据难不难?小白如何上手大数据?
  18. 直男届的杀手-『小冰』架构解析
  19. 手动给无线网设置一个DNS服务器地址,手动修改手机局域网无线网络的DNS地址
  20. “fatal error C1859: “Release\XXXX.pch”意外的预编译头错误,只需重新运行编译器就可能修复此问题”的一个解决办法

热门文章

  1. Mac下快速搭建PHP开发环境
  2. 简单记录H264的一些压缩技术(1)
  3. 《计算机网络》谢希仁第7版习题和答案
  4. rust的矿坑_Rust 基础语法
  5. 数字IC前端设计入门----之环境搭建
  6. 阿斯利康慢阻肺三联新药布地格福吸入气雾剂中国获批
  7. 【学习笔记】【Liblinear】
  8. 用Photoshop软件制作法线图以及查看效果细节
  9. 【Nginx学习系列】location匹配规则
  10. 即将大学毕业,谈谈我的大学与建议