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的命名空间。命名空间有固定的定义的,不能乱写,见下表:
二进制类型: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思维,完全可以自己创建任意类型来存储进去的。但是有一点要注意:使用自定义类型的时候应该尽量避免使用某一种语言所特有的数据类型,以防止将来增加多语言支持的时不能访问这些数据
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的命名空间。命名空间有固定的定义的,不能乱写,见下表:
| Protocol | Description |
|---|---|
| sip | SIP/SIMPLE |
| xmpp | XMPP/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 |
| unknown | Unknown or unspecified |
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思维,完全可以自己创建任意类型来存储进去的。但是有一点要注意:使用自定义类型的时候应该尽量避免使用某一种语言所特有的数据类型,以防止将来增加多语言支持的时不能访问这些数据


