Getting Started

June 24, 2026 · View on GitHub

This guide helps you install pyDBC and create your first network database using its high‑level creational APIs.

Installation

pyDBC uses Poetry for development and dependency management. You can also install it into an existing environment.

  • Python: 3.10+
  • SQLAlchemy: 2.0+

Using Poetry in a clone of the repository:

# from the project root
poetry install

# run tests (if any)
poetry run pytest

Using pip directly (when published):

pip install pydbc

Quickstart: Create a CAN DBC in memory

from pydbc.api.dbc import DBCCreator

# create an in‑memory DB
dbc = DBCCreator(":memory:")

# nodes (ECUs)
engine = dbc.create_node("Engine")
gateway = dbc.create_node("Gateway")

# message
engine_data = dbc.create_message("EngineData", message_id=100, dlc=8, sender=engine)

# signals
petrol_level = dbc.create_signal(
    "PetrolLevel", bitsize=8,
    byteorder=1, sign=1,
    formula_factor=1.0, formula_offset=0.0,
    minimum=0, maximum=255, unit="l",
)

# assign signal to message at bit offset 24
dbc.add_signal_to_message(engine_data, petrol_level, offset=24)

# commit to persist
dbc.commit()

Quickstart: Create a LIN network (LDF)

from pydbc.api.ldf import LDFCreator

ldf = LDFCreator(":memory:")
network = ldf.create_network("LINNetwork1", protocol_version="2.1", speed=19.2)
master = ldf.create_master_node("MasterECU", timebase=0.005, jitter=0.0001)
signal = ldf.create_signal("MotorSpeed", signal_size=16, init_value=0, publisher=master)
frame = ldf.create_unconditional_frame("MasterFrame", frame_id=0x10, size=2, publisher=master)
ldf.add_signal_to_frame(frame, signal, signal_offset=0)
ldf.commit()

Quickstart: Create a vehicle configuration (NCF)

from pydbc.api.ncf import NCFCreator

ncf = NCFCreator(":memory:")
vehicle = ncf.create_vehicle("TestVehicle")
can_network = ncf.create_network("CANNetwork", protocol="CAN", speed=500)
engine_ecu = ncf.create_ecu("EngineECU")

ncf.add_network_to_vehicle(vehicle, can_network)
ncf.add_ecu_to_vehicle(vehicle, engine_ecu)

ncf.commit()

Quickstart: Open and query an existing VNDB

from pydbc.api.query import VNDBQuery

# open an existing database created via importer or creator APIs
query = VNDBQuery("R1556_Veh_02.vndb")

networks = query.list_networks()
nodes = query.list_nodes()
messages = query.list_messages()
signals = query.list_signals()

engine = query.get_node("Engine")
engine_data = query.get_message(100)  # by message_id

print(query.summary())

Where to go next

  • Tutorial: docs/tutorial.md — Build a small but complete model step‑by‑step.
  • How‑to Guides: docs/how-to.md — Task‑oriented recipes (import/export, parsing, querying).
  • API Reference: docs/api-reference.md — Classes and methods.