python - 如何优化 Django 与数据库表的交互
问题描述
请问如何优化这个功能?我有树表:
Edges
超过 77 000 行和 20 列
Nodes
:超过 60 000 行和 20 列
RoadType
:超过 30 行和 20 列
def optimizing(request, pk):
degree_crs = "EPSG:4326"
meter_crs = "EPSG:3857"
road_network = RoadNetwork.objects.get(pk=road_network_id)
# Retrieve all nodes of the road network as a GeoDataFrame.
nodes = Node.objects.select_related('network').filter(network=road_network)
columns = ['id', 'node_id', 'location']
values = nodes.values_list(*columns)
nodes_gdf = gpd.GeoDataFrame.from_records(values, columns=columns)
nodes_gdf['location'] = gpd.GeoSeries.from_wkt(
nodes_gdf['location'].apply(lambda x: x.wkt), crs=degree_crs)
nodes_gdf.set_geometry('location', inplace=True)
# Retrieve all edges of the road network as a GeoDataFrame.
edges = Edge.objects.select_related('road_type', 'source',
'target').filter(network=road_network)
columns = ['edge_id', 'lanes', 'road_type', 'source', 'target', 'geometry']
values = edges.values_list(*columns)
edges_gdf = gpd.GeoDataFrame.from_records(values, columns=columns)
# Retrieve all Road type of a network as DataFrame
rtypes = RoadType.objects.filter(network=road_network)
columns = ['id', 'default_lanes', 'color']
values = rtypes.values_list(*columns)
rtypes_df = pd.DataFrame.from_records(values, columns=columns)
模型.py
class Edge(models.Model):
geometry = models.LineStringField(null=True)
name = models.CharField(max_length=200, blank=False)
target = models.ForeignKey(Node, on_delete=models.CASCADE)
source = models.ForeignKey(Node, on_delete=models.CASCADE)
network = models.ForeignKey(RoadNetWork,
on_delete=models.CASCADE)
road_type = models.ForeignKey(RoadType,
on_delete=models.CASCADE)
class Node(models.Model):
network = models.ForeignKey(RoadNetWork,
on_delete=models.CASCADE)
node_id = models.BigIntegerField()
name = models.CharField('Node Name', max_length=200)
location = models.PointField()
class RoadType(models.Model):
network = models.ForeignKey(RoadNetwork, on_delete=models.CASCADE)
road_type_id = models.SmallIntegerField()
解决方案
推荐阅读
- sql - 如何将两个完全不同的 SQL 查询组合成一个结果
- powershell - Powershell 复制邮箱权限
- python - PyQt5 - 在 QMainMenu 中,如何使 QWidget 成为父级(暂时)?
- sql - 交叉引用文件名列表到 sql 查询列以查找差异
- android - 在 Firebase 中从上到下移动子级
- powerbi - Power BI - 在查询编辑器中按分隔符操作拆分后表缺少一些行
- java - java中包含逗号时如何按逗号分隔行
- r - R Shiny - 在未执行模块中操作计数器的 actionButton
- php - 如何在 Moodle 中从外部填充测验?
- terraform - 虚拟机磁盘置备错误