维诺不是orm

vino的Python项目详细描述


维诺不是虫子。是的,这是真的,不是orm。

开始

使用VINO快速查看:

# setup
# db = Vino('engine://user:passwd@host:port/database')
db = Vino('sqlite://db.sqlite')

# query
db.table('user').find(username='lepture').fetch()

# create
db.table('user').create(username='lepture', website='http://lepture.com')
db.commit()

# update
db.table('user').find(username='lepture').update(username='Hsiaoming Yang')
db.commit()

# delete
db.table('user').find(username='lepture').delete()
db.commit()

设置

我们现在只支持sqlite3和mysql。

sqlite

具有相对路径的sqlite:

db = Vino('sqlite://relative/path/db.sqlite')

带绝对路径的sqlite:

db = Vino('sqlite:///root/path/db.sqlite')

请注意,它不同于sqlalchemy

mysql

包含所有信息的MySQL:

db = Vino('mysql://lepture:123456@localhost:3306/test')

信息较少的mysql:

db = Vino('mysql://lepture@localhost/test')

默认端口为3306。

请注意,默认情况下是utf8

查询

查找所有数据:

db.table('user').fetch()

查找所有指定的数据:

db.table('user').find(username='lepture').fetch()

查找第一个数据:

# fetch 1 will not return a list
db.table('user').find(username='lepture').fetch(1)

查询限制:

db.table('user').find(username='lepture').fetch(5, offset=3)

多个过滤器:

db.table('user').find(username='lepture', age=20).fetch()

高级过滤器:

# just like Django

db.table('user').find(age__in=[20, 22]).fetch()
db.table('user').find(age__gt=20).fetch()
db.table('user').find(age__lt=20).fetch()
db.table('user').find(age__gte=20).fetch()
db.table('user').find(age__lte=20).fetch()

# more see documentation

更高级的过滤器:

db.table('user').find(age__ne=20).fetch()  # not equal
db.table('user').find(age__nin=[20, 22]).fetch()  # not in

# more see documentation

查询顺序:

db.table('user').find(age=20).order('-id').fetch()

创建

更新

删除

删除所有数据:

db.table('user').delete()
db.commit()

删除指定数据:

db.table('user').find(username='lepture').delete()
db.commit()

常见问题解答

  1. 我该如何加入表格?

    Vino提供了简洁的API,您应该自己连接表 使用db.raw

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
类我在理解这个Java如何与我提供给它的参数一起工作时遇到问题   java如何获取Spring Boot@Async方法被拒绝的任务的详细信息?   java如何将测微计度量实现为动态映射   java分组列表<CustomerOrder>到地图<Gender,Money>   Java三元运算符内部的三元运算符,如何计算?   java消息源。getMessage send IllegalArgumentException:模式中的大括号不匹配   java小于1的不同分数的数目   Linux上的JavaIntelliJ:菜单:jdk>javap选项   jdk1的javacobertura问题。7.   Eclipse插件中指定的java ID   java“if(rs.next())”是什么意思?   在DatagramSocket服务器中将字符串转换为int的java   使用org通过java代码发送电子邮件。日食swt。好啊   java在没有CardLayout的JFrame中切换JPanel