调度mysql数据库数据层

FHR-DB的Python项目详细描述


fhr-db
==
灵感来源于博客文章http://backchannel.org/blog/friendfeed-schemales-mysql,fhr-db只是一个编程层,它使mysql数据库成为sql数据库。为了更好地使用mysql控制台,我跳过了一些优化。我计划在未来实现这种优化,但是需要一种用于fhr-db的phpMyAdmin,因为如果压缩了数据字段或者我们有二进制ID,mysql控制台就没用了。


——
创建应用程序时,需要创建新的数据库字段或删除某人。对于fhr db,如果您想使这些字段可搜索,只需在db中更改一些内容。使用fhr db,您只能查询索引,这可以防止编写速度较慢的应用程序,并提供了很大的灵活性。如果您有大量的数据,您可以轻松地在运行中的数据库上动态创建新索引,而不会影响性能。对于所有新的实体,对于所有旧的实体,索引将立即上升,您只需运行清理程序即可。


----
有点像谷歌的大表。如果要创建用户模型,则必须创建的表如下所示:

create table`users`(
`id`int(22)not null自动递增,
`body`text not null,
`updated`timestamp not null,
`created`timestamp not null,
primary key(`id`)
)engine=innodb default charset=utf8;

在代码中,您可以这样定义用户模型。


class user(model):
table='users'
fields={'nickname':none,'password':none,
'email':{'confirmed':false,'token':none,'email':none,'sent':false}

d获取这样的用户模型

user.set(password='another way to set sometgin')
user.set(email\u confirmed=true)
user.set(email\u token='asd',sent=true)
user.put()
print(user.get('id'))打印此保存用户的用户ID。

要获取id=10的用户,只需使用此代码

user=user.fqlget("id=%s",10)
如果用户不是none:
print(user.get('id'))\just prints out 10,然后如果找到用户

如果要查询具有昵称测试的用户,则必须创建索引。索引昵称的表如下所示:

create table`index_nickname_users`(
`id`int(22)not null auto_increment,
`nickname`varchar(64)not null,
`user_id`int(22)not null unique,
primary key(`id`),
key(`nickname`,`user_id`)
)engine=innodb default charset=utf8;

"sent":false}
index=[index(['nickname'],'index_nickname_users','user_id')]

不是唯一的用法

user=user.fklall("昵称=",test)


如果已经有用户将其昵称索引保存到数据库中,则不会生成昵称索引,因此不会出现在结果中。要建立索引,只需使用cleaner

cleaner.cleanmodel(用户)


,或者如果有多个索引用于特定索引,请使用cleaner

cleaner.cleanmODEL(用户)用户索引[0])

只需更新索引[0]。


测试驱动开发
对于质量保证,我使用测试驱动开发编码了整个FHR数据库。对于300行代码,我创建了80个测试用例,应该覆盖所有代码ATM。如果你发现了一个bug,就用这个testcase发出一个pull请求,这个请求会重现这个bug。


我们需要的是,我们也许可以从命令/clean.sh modelfile namespaceofmodel中轻松运行cleaner。只需一个命令,就可以从模型文件自动创建索引表、构建索引等。为了获得更好的性能,二进制索引和压缩的json会很酷,但为此我们需要一个数据发现工具,例如phpmyadmin for fhr db,因为mysql控制台对于二进制id或压缩的json将毫无用处。

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

推荐PyPI第三方库


热门话题
java在Hibernate中使用条件连接两个表?   Stripes框架中的java对话范围   我的内存够吗?   Jenkins Java&Selenium如何处理2个随机异常?   javascript Java websockets跨端点共享会话   java是一种测试驱动的开发方法吗?   Java客户端中的Soap连接超时,但在SOAPUI中未超时   Java LibGDX:TileMap未在顶部和右侧渲染   linux Java::process builder:bash脚本:返回的文件名正确,但fileReader引发FileNotFoundException   java Selenium单击自动随机生成的DIV/ID/LINK   比较两个忽略元素和属性顺序的XMl文件   Java无限循环/调用   java如何防止操作修改cookie?   列出未保存的Java webpanel命令   在Java中,如何解决XXXX不能作为变量求解的错误?   Java概念后期版本格式化部分