维诺不是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()
常见问题解答
我该如何加入表格?
Vino提供了简洁的API,您应该自己连接表 使用db.raw