我使用Flask(作为框架)和MongoDB(作为数据库服务器).现在,我所能做的只是传递我从数据库获得的一个参数:
@app.route('/im/', methods=['GET', 'POST'])
def im_research(user=None):
error = None
if request.method == 'POST':
if request.form['user']:
user = mongo.db.Users.find_one_or_404({'ticker':request.form['user']})
return redirect(url_for('im_user',user= user) )
else:
flash('Enter a different user')
return redirect(url_for('im'))
if request.method == 'GET':
return render_template('im.html', user= None)
Run Code Online (Sandbox Code Playgroud)
我如何从数据库传递多个变量:例如:在我的Mongo数据库中:我在我的数据库中有这些东西,我想将它们全部传递给我的模板.
{
users:'xxx'
content:'xxx'
timestamp:'xxx'
}
Run Code Online (Sandbox Code Playgroud)
使用Flask可以做到这一点吗?
我在我的Angular 2/4应用程序中导入模块,如下所示:
import { MapboxDraw } from '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw';
Run Code Online (Sandbox Code Playgroud)
并在其中一个组件中使用它:
var draw = new MapboxDraw({
displayControlsDefault: false,
controls: {
polygon: true,
trash: true
}
});
map.addControl(draw);
Run Code Online (Sandbox Code Playgroud)
但是当我打开页面时收到错误:
ERROR TypeError: __WEBPACK_IMPORTED_MODULE_4__mapbox_mapbox_gl_draw_dist_mapbox_gl_draw__.MapboxDraw is not a constructor
Run Code Online (Sandbox Code Playgroud)
导入mapbox-gl-draw的最佳方法是什么?
我有一张超过1000万行的表.大约有50多列.该表存储传感器数据/参数.假设我需要查询全天或86,400秒的数据.完成此查询需要大约20秒或更长时间.
我在几个列上添加了单独的索引,例如recordTimestamp(捕获数据时存储),deviceId(传感器的标识),positionValid(GPS地理定位是否有效).然后我添加了一个包含所有三列的复合索引.
以下是我的查询:
t1 = time.time()
conn = engine.connect()
select_statement = select([Datatable]).where(and_(
Datatable.recordTimestamp >= start_date,
Datatable.recordTimestamp <= end_date,
Datatable.deviceId == device_id,
Datatable.positionValid != None,
Datatable.recordTimestamp % query_interval == 0))
lol_data = conn.execute(select_statement).fetchall()
conn.close()
t2 = time.time()
time_taken = t2 - t1
print('Select: ' + time_taken)
Run Code Online (Sandbox Code Playgroud)
以下是我的EXPLAIN ANALYZE语句:
EXPLAIN ANALYZE SELECT datatable.id, datatable."createdAt", datatable."analogInput01", datatable."analogInput02", datatable."analogInput03", datatable."analogInput04", datatable."analogInput05", datatable."analogInput06", datatable."analogInput07", datatable."canEngineRpm", datatable."canEngineTemperature", datatable."canFuelConsumedLiters", datatable."canFuelLevel", datatable."canVehicleMileage", datatable."deviceId", datatable."deviceTemperature", datatable."deviceInternalVoltage", datatable."deviceExternalVoltage", datatable."deviceAntennaCut", datatable."deviceEnum", datatable."deviceVehicleMileage", datatable."deviceSimSignal", datatable."deviceSimStatus", datatable."iButton01", datatable."iButton02", datatable."recordSequence", datatable."recordTimestamp", datatable."accelerationAbsolute", datatable."accelerationBrake", datatable."accelerationBump", …Run Code Online (Sandbox Code Playgroud) 我正在查询大约100,000行,每行约40列.列是float,integer,datetime和char的组合.
查询时间大约是两秒钟,序列化需要40秒或更长时间,而响应构建大约需要两秒钟.
我想知道如何减少Django模型的序列化时间?
这是我的模型:
class TelematicsData(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
device = models.ForeignKey(Device, on_delete=models.CASCADE, null=True)
created_date = models.DateTimeField(auto_now=True)
analog_input_01 = models.FloatField(null=True)
analog_input_02 = models.FloatField(null=True)
analog_input_03 = models.FloatField(null=True)
analog_input_04 = models.FloatField(null=True)
analog_input_05 = models.FloatField(null=True)
analog_input_06 = models.FloatField(null=True)
device_temperature = models.FloatField(null=True)
device_voltage = models.FloatField(null=True)
vehicle_voltage = models.FloatField(null=True)
absolute_acceleration = models.FloatField(null=True)
brake_acceleration = models.FloatField(null=True)
bump_acceleration = models.FloatField(null=True)
turn_acceleration = models.FloatField(null=True)
x_acceleration = models.FloatField(null=True)
y_acceleration = models.FloatField(null=True)
z_acceleration = models.FloatField(null=True)
cell_location_error_meters = models.FloatField(null=True)
engine_ignition_status = models.NullBooleanField()
gnss_antenna_status = models.NullBooleanField()
gnss_type = models.CharField(max_length=20, default='NA') …Run Code Online (Sandbox Code Playgroud) python ×2
angular ×1
django ×1
flask ×1
mapbox ×1
mapbox-gl-js ×1
mongodb ×1
postgresql ×1
psycopg2 ×1
sqlalchemy ×1