一个建议是规范化您的数据,即在您的 Location 表中,Region 列是一个整数值,代表您的一个区域。然后创建一个 Regions 表,其中仅列出一次您的区域名称。因此 Location 表只引用了 Regions 表的索引(或外键)。
例如:您的 Regions 表是这样的:
- id=1, regionname=北美
- id=2, regionname=南美洲
- id=3, regionname=中美洲
- id=4, regionname=亚洲/太平洋岛屿
然后,您的 Locations 表只是索引这个:
- id=1,区域=1
- ID=2,区域=2
- ID=3,区域=3
- id=4,区域=4
- ID=5,区域=2
- id=6,区域=1
这是一个简单但粗略的例子:
from elixir import *
metadata.bind = "sqlite:///"
class Regions(Entity):
regionname = Field(String(255))
class Location(Entity):
region = ManyToOne('Regions')
setup_all()
create_all()
#Create the region names:
na_temp = Regions(regionname="North America")
sa_temp = Regions(regionname="South America")
ca_temp = Regions(regionname="Central America")
ap_temp = Regions(regionname="Asia/Pacific Islands")
session.commit()
#Create links to each region in the location table:
northamerica = Location(region=na_temp)
southamerica = Location(region=sa_temp)
centamerica = Location(region=ca_temp)
asiapacific = Location(region=ap_temp)
anotherarea = Location(region=sa_temp)
yetanotherarea = Location(region=na_temp)
session.commit()
#Get all items from the Location table:
locations = Location.query.all()
#Display the contents of the Location table, and lookup the name from the Regions table
for place in locations:
print "Location table id: {}".format(place.region_id)
print "Lookup region name: {}".format(Regions.get_by(id=place.region_id).regionname)
print
有更多的方法可以做到这一点,这只是我的方法;我不是你会遇到的最强大的 Python 程序员。