高质量编码-轨迹管理平台(表设计)

2020-12-02 14:27:13 浏览数 (1)

设计了4个表,User,Fleed,Locator,Coordinate分别表示用户,轨迹服务,设备管理,历史轨迹。

其中每个用户可以有多个轨迹服务,一个轨迹服务可以有多个定位设备,不同设备的定位数据由coordinate_locator区分。

整个平台后台由Python开发。数据库的访问和操作使用了轻量级ORM框架sqlobject(也可以使用Sqlalchemy或Peewee等其他ORM框架)。表定义代码如下:

代码语言:python代码运行次数:0复制
# -*- coding:utf-8 -*-
from sqlobject import *
import os
class User(SQLObject):
    user_name=StringCol(notNone=True)
    user_fleeds=MultipleJoin('Fleed',joinColumn="User")

class Fleed(SQLObject):
    fleed_name=StringCol(notNone=True,default='Untitled')
    fleed_user=ForeignKey('User')
    fleed__locators=MultipleJoin('Locator')
    
class Locator(SQLObject):
    locator_name=StringCol(notNone=True,default='Untitled')
    locator_fleed=ForeignKey('Fleed')
    locator_coordinates=MultipleJoin('Coordinate')

class Coordinate(SQLObject):
    coordinate_x=FloatCol(default=90)
    coordinate_y=FloatCol(default=90)
    coordinate_time=DateTimeCol(default=DateTimeCol.now())
    coordinate_locator=ForeignKey('Locator')
                                     
    
def initDatabase():
    connectionString='sqlite:./GPS_DB.db'
    con=connectionForURI(connectionString)
    sqlhub.threadConnection=con

def createTables():
    User.createTable(ifNotExists=True)
    Fleed.createTable(ifNotExists=True)
    Locator.createTable(ifNotExists=True)
    Coordinate.createTable(ifNotExists=True)

def deleteTables():
    User.dropTable(ifExists=True)
    Fleed.dropTable(ifExists=True)
    Locator.dropTable(ifExists=True)
    Coordinate.dropTable(ifExists=True)

if __name__=='__main__':
    
    initDatabase()
    #createTables()
    
    

0 人点赞