When your driver creates loop and archive observations, you need to set usUnits to reflect the correct system. For example, the vantage drive sets:
In the loop data and archive records.
If you do this, weewx will do the conversions and store values in the database in the system you specified when you created the database.
But there is more. You have to use the correct metric units. To do this, see the weewx/units.py file. Look up the observation in that file, find the group, and then look up what that group expects.
And, if you look up group_rain for metric, you’ll find group_rain is expecting cm:
# This dictionary maps unit groups to a standard unit type in the
# metric unit system:
MetricUnits = ListOfDicts({
"group_altitude" : "meter",
"group_amp" : "amp",
"group_angle" : "degree_angle",
"group_boolean" : "boolean",
"group_concentration": "microgram_per_meter_cubed",
"group_count" : "count",
"group_data" : "byte",
"group_db" : "dB",
"group_degree_day" : "degree_C_day",
"group_deltatime" : "second",
"group_direction" : "degree_compass",
"group_distance" : "km",
"group_elapsed" : "second",
"group_energy" : "watt_hour",
"group_energy2" : "watt_second",
"group_fraction" : "ppm",
"group_frequency" : "hertz",
"group_illuminance" : "lux",
"group_interval" : "minute",
"group_length" : "cm",
"group_moisture" : "centibar",
"group_percent" : "percent",
"group_power" : "watt",
"group_pressure" : "mbar",
"group_pressurerate": "mbar_per_hour",
"group_radiation" : "watt_per_meter_squared",
"group_rain" : "cm",
"group_rainrate" : "cm_per_hour",
"group_speed" : "km_per_hour",
"group_speed2" : "km_per_hour2",
"group_temperature" : "degree_C",
"group_time" : "unix_epoch",
"group_uv" : "uv_index",
"group_volt" : "volt",
"group_volume" : "liter"
})