“黄沙中,飞舞着我们的先王,他们在空中俯视着子民们对蓝色的向往。” 火之章 霜之章 [最新更新:9月15日]

你在这里看到的是一位.NET程序员的执着及其信仰的效率世界观。我们行走在消逝中,但我们都有希望,都有传承。

Google Apps Engine 内置数据类型总结 ,2008-10-16,0条评论

GAE内置的数据库不同于我们常用的SQL家族,它直接存储对象,可以说是属于面向对象级的。

目前还缺少丰富的文档资源,为此我总结一些数据类型,供各位参考:

字符串类型

db.StringProperty(),db.StringProperty(multiline=True)存储多行数据

db.TextProperty():db.Text("kittens", encoding="latin-1"),db.Text(u"kittens")

单词类型,常用于存储tag数据:db.CategoryProperty():db.Category("kittens")

时间类型:db.DateTimeProperty(auto_now_add=True)

Google帐号数据类型:db.UserProperty(),格式是:"Albert.Johnson@example.com"

聊天工具帐号类型:db.IMProperty(),创建格式:db.IM("http://example.com/", "Larry97"),第一个参数表示IM的命名空间。命名空间有固定的定义的,不能乱写,见下表:

ProtocolDescription
sipSIP/SIMPLE
xmppXMPP/Jabber
http://aim.com/AIM
http://icq.com/ICQ
http://talk.google.com/Google Talk
http://messenger.msn.com/MSN Messenger
http://messenger.yahoo.com/Yahoo Messenger
http://sametime.com/Lotus Sametime
http://gadu-gadu.pl/Gadu-Gadu
unknownUnknown or unspecified
二进制类型:db.BlobProperty(),创建格式:db.Blob(open("image.png").read())

Email类型:db.EmailProperty(),创建格式:db.Email("larry@example.com")

超链接类型:db.LinkProperty(),创建格式:db.Link("http://www.google.com/")

电话号码类型(可能用不上):db.PhoneNumberProperty(),创建格式:db.PhoneNumber("1 (206) 555-1212")

送货地址类型(可能用不上):db.PostalAddressProperty(),创建格式:db.PostalAddress("1600 Ampitheater Pkwy., Mountain View, CA") 数字评价类型(0-100):db.RatingProperty(),创建格式:db.Rating(97)

这里有一个很有用的办法:db.get(obj2.reference),其中obj2.reference是一个key类型,通过db.ReferenceProperty(类名) 来创建,这样我们就可以直接在所有的数据中检测到唯一的一条数据。key类型保证了数据唯一性,不用我们操心。

以上就是一些常用的默认支持类型,不过,既然是面向对象级的数据库,我们就应该抛开传统的SQL思维,完全可以自己创建任意类型来存储进去的。但是有一点要注意:使用自定义类型的时候应该尽量避免使用某一种语言所特有的数据类型,以防止将来增加多语言支持的时不能访问这些数据

mcts

Category

Tag

Archives

  • kvspas
  • Powered by Google App Engine