[{"data":1,"prerenderedAt":1532},["ShallowReactive",2],{"navigation_docs":3,"-api-exceptions":106,"-api-exceptions-surround":1529},[4,26,57,83],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":25},"Getting Started","i-lucide-rocket","/getting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start","i-lucide-play",false,{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":25},"Core Concepts","i-lucide-book-open","/essentials","2.essentials",[32,37,42,47,52],{"title":33,"path":34,"stem":35,"icon":36},"Models","/essentials/models","2.essentials/1.models","i-lucide-box",{"title":38,"path":39,"stem":40,"icon":41},"Collections","/essentials/collections","2.essentials/2.collections","i-lucide-folder",{"title":43,"path":44,"stem":45,"icon":46},"Views","/essentials/views","2.essentials/3.views","i-lucide-table",{"title":48,"path":49,"stem":50,"icon":51},"Schema Evolution","/essentials/schema-evolution","2.essentials/4.schema-evolution","i-lucide-git-branch",{"title":53,"path":54,"stem":55,"icon":56},"Relations","/essentials/relations","2.essentials/5.relations","i-lucide-link",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":25},"Advanced","i-lucide-settings","/advanced","3.advanced",[63,68,73,78],{"title":64,"path":65,"stem":66,"icon":67},"Time-Series","/advanced/time-series","3.advanced/1.time-series","i-lucide-chart-line",{"title":69,"path":70,"stem":71,"icon":72},"Async Support","/advanced/async","3.advanced/2.async","i-lucide-zap",{"title":74,"path":75,"stem":76,"icon":77},"PostgreSQL","/advanced/postgresql","3.advanced/3.postgresql","i-lucide-database",{"title":79,"path":80,"stem":81,"icon":82},"Performance Guide","/advanced/performance","3.advanced/4.performance","i-lucide-gauge",{"title":84,"icon":85,"path":86,"stem":87,"children":88,"page":25},"API Reference","i-lucide-file-code","/api","4.api",[89,94,98,101],{"title":90,"path":91,"stem":92,"icon":93},"Engine","/api/engine","4.api/1.engine","i-lucide-cog",{"title":95,"path":96,"stem":97,"icon":41},"Collection","/api/collection","4.api/2.collection",{"title":33,"path":99,"stem":100,"icon":36},"/api/models","4.api/3.models",{"title":102,"path":103,"stem":104,"icon":105},"Exceptions","/api/exceptions","4.api/4.exceptions","i-lucide-alert-triangle",{"id":107,"title":102,"body":108,"description":1522,"extension":1523,"links":1524,"meta":1525,"navigation":1526,"path":103,"seo":1527,"stem":104,"__hash__":1528},"docs/4.api/4.exceptions.md",{"type":109,"value":110,"toc":1512},"minimark",[111,120,220,225,236,369,373,382,450,526,537,541,544,577,714,764,769,773,796,846,907,916,920,946,1117,1186,1200,1204,1213,1267,1307,1313,1317,1329,1379,1383,1401,1454,1460,1508],[112,113,114,115,119],"p",{},"All exceptions are importable from ",[116,117,118],"code",{},"centaurodb",":",[121,122,127],"pre",{"className":123,"code":124,"language":125,"meta":126,"style":126},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from centaurodb import (\n    ObjectNotFoundError,\n    ObjectAlreadyPersistedError,\n    ObjectNotPersistedError,\n    UnlinkedParentError,\n    ParentHasChildrenError,\n    ViewAlreadyExistsError,\n    ValuesNotHydratedError,\n    ThreadSafetyError,\n)\n","python","",[116,128,129,149,158,166,174,182,190,198,206,214],{"__ignoreMap":126},[130,131,134,138,142,145],"span",{"class":132,"line":133},"line",1,[130,135,137],{"class":136},"s7zQu","from",[130,139,141],{"class":140},"sTEyZ"," centaurodb ",[130,143,144],{"class":136},"import",[130,146,148],{"class":147},"sMK4o"," (\n",[130,150,152,155],{"class":132,"line":151},2,[130,153,154],{"class":140},"    ObjectNotFoundError",[130,156,157],{"class":147},",\n",[130,159,161,164],{"class":132,"line":160},3,[130,162,163],{"class":140},"    ObjectAlreadyPersistedError",[130,165,157],{"class":147},[130,167,169,172],{"class":132,"line":168},4,[130,170,171],{"class":140},"    ObjectNotPersistedError",[130,173,157],{"class":147},[130,175,177,180],{"class":132,"line":176},5,[130,178,179],{"class":140},"    UnlinkedParentError",[130,181,157],{"class":147},[130,183,185,188],{"class":132,"line":184},6,[130,186,187],{"class":140},"    ParentHasChildrenError",[130,189,157],{"class":147},[130,191,193,196],{"class":132,"line":192},7,[130,194,195],{"class":140},"    ViewAlreadyExistsError",[130,197,157],{"class":147},[130,199,201,204],{"class":132,"line":200},8,[130,202,203],{"class":140},"    ValuesNotHydratedError",[130,205,157],{"class":147},[130,207,209,212],{"class":132,"line":208},9,[130,210,211],{"class":140},"    ThreadSafetyError",[130,213,157],{"class":147},[130,215,217],{"class":132,"line":216},10,[130,218,219],{"class":147},")\n",[221,222,224],"h2",{"id":223},"objectnotfounderror","ObjectNotFoundError",[112,226,227,228,235],{},"Raised when ",[229,230,232],"a",{"href":231},"/api/collection#read_object_by_id",[116,233,234],{},"read_object_by_id()"," finds no matching row.",[121,237,239],{"className":123,"code":238,"language":125,"meta":126,"style":126},"try:\n    coll.read_object_by_id(999, Sensor)\nexcept ObjectNotFoundError as e:\n    print(e.model_name)   # \"Sensor\"\n    print(e.id)           # 999\n    print(e.collection)   # \"monitoring\"\n    print(e.table)        # \"monitoring_objects\"\n",[116,240,241,249,276,292,315,333,351],{"__ignoreMap":126},[130,242,243,246],{"class":132,"line":133},[130,244,245],{"class":136},"try",[130,247,248],{"class":147},":\n",[130,250,251,254,257,261,264,268,271,274],{"class":132,"line":151},[130,252,253],{"class":140},"    coll",[130,255,256],{"class":147},".",[130,258,260],{"class":259},"s2Zo4","read_object_by_id",[130,262,263],{"class":147},"(",[130,265,267],{"class":266},"sbssI","999",[130,269,270],{"class":147},",",[130,272,273],{"class":259}," Sensor",[130,275,219],{"class":147},[130,277,278,281,284,287,290],{"class":132,"line":160},[130,279,280],{"class":136},"except",[130,282,283],{"class":140}," ObjectNotFoundError ",[130,285,286],{"class":136},"as",[130,288,289],{"class":140}," e",[130,291,248],{"class":147},[130,293,294,297,299,302,304,308,311],{"class":132,"line":168},[130,295,296],{"class":259},"    print",[130,298,263],{"class":147},[130,300,301],{"class":259},"e",[130,303,256],{"class":147},[130,305,307],{"class":306},"swJcz","model_name",[130,309,310],{"class":147},")",[130,312,314],{"class":313},"sHwdD","   # \"Sensor\"\n",[130,316,317,319,321,323,325,328,330],{"class":132,"line":176},[130,318,296],{"class":259},[130,320,263],{"class":147},[130,322,301],{"class":259},[130,324,256],{"class":147},[130,326,327],{"class":306},"id",[130,329,310],{"class":147},[130,331,332],{"class":313},"           # 999\n",[130,334,335,337,339,341,343,346,348],{"class":132,"line":184},[130,336,296],{"class":259},[130,338,263],{"class":147},[130,340,301],{"class":259},[130,342,256],{"class":147},[130,344,345],{"class":306},"collection",[130,347,310],{"class":147},[130,349,350],{"class":313},"   # \"monitoring\"\n",[130,352,353,355,357,359,361,364,366],{"class":132,"line":192},[130,354,296],{"class":259},[130,356,263],{"class":147},[130,358,301],{"class":259},[130,360,256],{"class":147},[130,362,363],{"class":306},"table",[130,365,310],{"class":147},[130,367,368],{"class":313},"        # \"monitoring_objects\"\n",[221,370,372],{"id":371},"objectalreadypersistederror","ObjectAlreadyPersistedError",[112,374,227,375,381],{},[229,376,378],{"href":377},"/api/collection#write_object",[116,379,380],{},"write_object()"," is called on an object that has already been written.",[121,383,385],{"className":123,"code":384,"language":125,"meta":126,"style":126},"obj = Sensor(unit=\"C\")\ncoll.write_object(obj)\ncoll.write_object(obj)  # raises ObjectAlreadyPersistedError\n",[116,386,387,416,433],{"__ignoreMap":126},[130,388,389,392,395,397,399,403,405,408,412,414],{"class":132,"line":133},[130,390,391],{"class":140},"obj ",[130,393,394],{"class":147},"=",[130,396,273],{"class":259},[130,398,263],{"class":147},[130,400,402],{"class":401},"sHdIc","unit",[130,404,394],{"class":147},[130,406,407],{"class":147},"\"",[130,409,411],{"class":410},"sfazB","C",[130,413,407],{"class":147},[130,415,219],{"class":147},[130,417,418,421,423,426,428,431],{"class":132,"line":151},[130,419,420],{"class":140},"coll",[130,422,256],{"class":147},[130,424,425],{"class":259},"write_object",[130,427,263],{"class":147},[130,429,430],{"class":259},"obj",[130,432,219],{"class":147},[130,434,435,437,439,441,443,445,447],{"class":132,"line":160},[130,436,420],{"class":140},[130,438,256],{"class":147},[130,440,425],{"class":259},[130,442,263],{"class":147},[130,444,430],{"class":259},[130,446,310],{"class":147},[130,448,449],{"class":313},"  # raises ObjectAlreadyPersistedError\n",[363,451,452,468],{},[453,454,455],"thead",{},[456,457,458,462,465],"tr",{},[459,460,461],"th",{},"Attribute",[459,463,464],{},"Type",[459,466,467],{},"Description",[469,470,471,486,500,513],"tbody",{},[456,472,473,478,483],{},[474,475,476],"td",{},[116,477,307],{},[474,479,480],{},[116,481,482],{},"str",[474,484,485],{},"Name of the model class",[456,487,488,492,497],{},[474,489,490],{},[116,491,327],{},[474,493,494],{},[116,495,496],{},"int",[474,498,499],{},"Row id of the already-persisted object",[456,501,502,506,510],{},[474,503,504],{},[116,505,345],{},[474,507,508],{},[116,509,482],{},[474,511,512],{},"Collection name",[456,514,515,519,523],{},[474,516,517],{},[116,518,363],{},[474,520,521],{},[116,522,482],{},[474,524,525],{},"Backing table name",[112,527,528,529,532,533,536],{},"Use ",[116,530,531],{},"duplicate=True"," to insert a new row, or ",[116,534,535],{},"update_object()"," to update the existing one.",[221,538,540],{"id":539},"objectnotpersistederror","ObjectNotPersistedError",[112,542,543],{},"Raised when an operation requires a persisted object but the object hasn't been written to the database yet. This includes:",[545,546,547,556],"ul",{},[548,549,550,555],"li",{},[229,551,553],{"href":552},"/api/collection#update_object",[116,554,535],{}," — called on an object that was never written",[548,557,558,564,565,571,572,576],{},[229,559,561],{"href":560},"/api/collection#write_child",[116,562,563],{},"write_child()",", ",[229,566,568],{"href":567},"/api/collection#children_of",[116,569,570],{},"children_of()"," — called with an unpersisted ",[573,574,575],"strong",{},"parent"," object",[121,578,580],{"className":123,"code":579,"language":125,"meta":126,"style":126},"obj = Sensor(unit=\"C\")\ncoll.update_object(obj)  # raises ObjectNotPersistedError\n\n# Also raised for an unpersisted parent:\nportfolio = Portfolio(strategy=\"momentum\")  # not yet written\ncoll.write_child(trade, parent=portfolio)    # raises ObjectNotPersistedError\ncoll.children_of(portfolio, Trade)          # raises ObjectNotPersistedError\n",[116,581,582,604,622,628,633,662,691],{"__ignoreMap":126},[130,583,584,586,588,590,592,594,596,598,600,602],{"class":132,"line":133},[130,585,391],{"class":140},[130,587,394],{"class":147},[130,589,273],{"class":259},[130,591,263],{"class":147},[130,593,402],{"class":401},[130,595,394],{"class":147},[130,597,407],{"class":147},[130,599,411],{"class":410},[130,601,407],{"class":147},[130,603,219],{"class":147},[130,605,606,608,610,613,615,617,619],{"class":132,"line":151},[130,607,420],{"class":140},[130,609,256],{"class":147},[130,611,612],{"class":259},"update_object",[130,614,263],{"class":147},[130,616,430],{"class":259},[130,618,310],{"class":147},[130,620,621],{"class":313},"  # raises ObjectNotPersistedError\n",[130,623,624],{"class":132,"line":160},[130,625,627],{"emptyLinePlaceholder":626},true,"\n",[130,629,630],{"class":132,"line":168},[130,631,632],{"class":313},"# Also raised for an unpersisted parent:\n",[130,634,635,638,640,643,645,648,650,652,655,657,659],{"class":132,"line":176},[130,636,637],{"class":140},"portfolio ",[130,639,394],{"class":147},[130,641,642],{"class":259}," Portfolio",[130,644,263],{"class":147},[130,646,647],{"class":401},"strategy",[130,649,394],{"class":147},[130,651,407],{"class":147},[130,653,654],{"class":410},"momentum",[130,656,407],{"class":147},[130,658,310],{"class":147},[130,660,661],{"class":313},"  # not yet written\n",[130,663,664,666,668,671,673,676,678,681,683,686,688],{"class":132,"line":184},[130,665,420],{"class":140},[130,667,256],{"class":147},[130,669,670],{"class":259},"write_child",[130,672,263],{"class":147},[130,674,675],{"class":259},"trade",[130,677,270],{"class":147},[130,679,680],{"class":401}," parent",[130,682,394],{"class":147},[130,684,685],{"class":259},"portfolio",[130,687,310],{"class":147},[130,689,690],{"class":313},"    # raises ObjectNotPersistedError\n",[130,692,693,695,697,700,702,704,706,709,711],{"class":132,"line":192},[130,694,420],{"class":140},[130,696,256],{"class":147},[130,698,699],{"class":259},"children_of",[130,701,263],{"class":147},[130,703,685],{"class":259},[130,705,270],{"class":147},[130,707,708],{"class":259}," Trade",[130,710,310],{"class":147},[130,712,713],{"class":313},"          # raises ObjectNotPersistedError\n",[363,715,716,726],{},[453,717,718],{},[456,719,720,722,724],{},[459,721,461],{},[459,723,464],{},[459,725,467],{},[469,727,728,740,752],{},[456,729,730,734,738],{},[474,731,732],{},[116,733,307],{},[474,735,736],{},[116,737,482],{},[474,739,485],{},[456,741,742,746,750],{},[474,743,744],{},[116,745,345],{},[474,747,748],{},[116,749,482],{},[474,751,512],{},[456,753,754,758,762],{},[474,755,756],{},[116,757,363],{},[474,759,760],{},[116,761,482],{},[474,763,525],{},[112,765,528,766,768],{},[116,767,380],{}," to persist the object first.",[221,770,772],{"id":771},"unlinkedparenterror","UnlinkedParentError",[112,774,227,775,779,780,784,785,788,789,791,792,795],{},[229,776,777],{"href":377},[116,778,380],{}," or ",[229,781,782],{"href":552},[116,783,535],{}," is called on a child that has unset ",[116,786,787],{},"parent_ref"," fields. Every ",[116,790,787],{}," must be linked to a persisted parent before writing or updating. See the ",[229,793,794],{"href":54},"Relations guide"," for linking patterns.",[121,797,799],{"className":123,"code":798,"language":125,"meta":126,"style":126},"trade = Trade(symbol=\"AAPL\")  # trade.portfolio is None\ncoll.write_object(trade)       # raises UnlinkedParentError\n",[116,800,801,829],{"__ignoreMap":126},[130,802,803,806,808,810,812,815,817,819,822,824,826],{"class":132,"line":133},[130,804,805],{"class":140},"trade ",[130,807,394],{"class":147},[130,809,708],{"class":259},[130,811,263],{"class":147},[130,813,814],{"class":401},"symbol",[130,816,394],{"class":147},[130,818,407],{"class":147},[130,820,821],{"class":410},"AAPL",[130,823,407],{"class":147},[130,825,310],{"class":147},[130,827,828],{"class":313},"  # trade.portfolio is None\n",[130,830,831,833,835,837,839,841,843],{"class":132,"line":151},[130,832,420],{"class":140},[130,834,256],{"class":147},[130,836,425],{"class":259},[130,838,263],{"class":147},[130,840,675],{"class":259},[130,842,310],{"class":147},[130,844,845],{"class":313},"       # raises UnlinkedParentError\n",[363,847,848,858],{},[453,849,850],{},[456,851,852,854,856],{},[459,853,461],{},[459,855,464],{},[459,857,467],{},[469,859,860,873,893],{},[456,861,862,866,870],{},[474,863,864],{},[116,865,307],{},[474,867,868],{},[116,869,482],{},[474,871,872],{},"Name of the child model class",[456,874,875,880,884],{},[474,876,877],{},[116,878,879],{},"field",[474,881,882],{},[116,883,482],{},[474,885,886,887,889,890],{},"The ",[116,888,787],{}," field that is ",[116,891,892],{},"None",[456,894,895,900,904],{},[474,896,897],{},[116,898,899],{},"parent_model_name",[474,901,902],{},[116,903,482],{},[474,905,906],{},"Name of the expected parent model class",[112,908,528,909,912,913,915],{},[116,910,911],{},"collection.write_child()"," or set the ",[116,914,787],{}," field directly before writing.",[221,917,919],{"id":918},"parenthaschildrenerror","ParentHasChildrenError",[112,921,227,922,779,928,934,935,937,938,941,942,256],{},[229,923,925],{"href":924},"/api/collection#delete_object",[116,926,927],{},"delete_object()",[229,929,931],{"href":930},"/api/collection#delete_objects",[116,932,933],{},"delete_objects()"," targets a parent that still has child rows referencing it via a ",[116,936,787],{}," field with ",[116,939,940],{},"on_delete=\"restrict\""," (the default). The parent row is left untouched. See ",[229,943,945],{"href":944},"/essentials/relations#deleting-parents-and-children","Relations — Deleting parents and children",[121,947,949],{"className":123,"code":948,"language":125,"meta":126,"style":126},"quest = Quest(name=\"The Odyssey\")\ncoll.write_object(quest)\ncoll.write_child(Task(title=\"Escape the Cyclops\"), parent=quest)\n\ncoll.delete_object(quest)  # raises ParentHasChildrenError\n\n# Delete the children first, then the parent\ncoll.delete_objects(Task.fields.quest == quest.row.id)\ncoll.delete_object(quest)  # works\n",[116,950,951,977,992,1030,1034,1052,1056,1061,1100],{"__ignoreMap":126},[130,952,953,956,958,961,963,966,968,970,973,975],{"class":132,"line":133},[130,954,955],{"class":140},"quest ",[130,957,394],{"class":147},[130,959,960],{"class":259}," Quest",[130,962,263],{"class":147},[130,964,965],{"class":401},"name",[130,967,394],{"class":147},[130,969,407],{"class":147},[130,971,972],{"class":410},"The Odyssey",[130,974,407],{"class":147},[130,976,219],{"class":147},[130,978,979,981,983,985,987,990],{"class":132,"line":151},[130,980,420],{"class":140},[130,982,256],{"class":147},[130,984,425],{"class":259},[130,986,263],{"class":147},[130,988,989],{"class":259},"quest",[130,991,219],{"class":147},[130,993,994,996,998,1000,1002,1005,1007,1010,1012,1014,1017,1019,1022,1024,1026,1028],{"class":132,"line":160},[130,995,420],{"class":140},[130,997,256],{"class":147},[130,999,670],{"class":259},[130,1001,263],{"class":147},[130,1003,1004],{"class":259},"Task",[130,1006,263],{"class":147},[130,1008,1009],{"class":401},"title",[130,1011,394],{"class":147},[130,1013,407],{"class":147},[130,1015,1016],{"class":410},"Escape the Cyclops",[130,1018,407],{"class":147},[130,1020,1021],{"class":147},"),",[130,1023,680],{"class":401},[130,1025,394],{"class":147},[130,1027,989],{"class":259},[130,1029,219],{"class":147},[130,1031,1032],{"class":132,"line":168},[130,1033,627],{"emptyLinePlaceholder":626},[130,1035,1036,1038,1040,1043,1045,1047,1049],{"class":132,"line":176},[130,1037,420],{"class":140},[130,1039,256],{"class":147},[130,1041,1042],{"class":259},"delete_object",[130,1044,263],{"class":147},[130,1046,989],{"class":259},[130,1048,310],{"class":147},[130,1050,1051],{"class":313},"  # raises ParentHasChildrenError\n",[130,1053,1054],{"class":132,"line":184},[130,1055,627],{"emptyLinePlaceholder":626},[130,1057,1058],{"class":132,"line":192},[130,1059,1060],{"class":313},"# Delete the children first, then the parent\n",[130,1062,1063,1065,1067,1070,1072,1074,1076,1079,1081,1083,1086,1089,1091,1094,1096,1098],{"class":132,"line":200},[130,1064,420],{"class":140},[130,1066,256],{"class":147},[130,1068,1069],{"class":259},"delete_objects",[130,1071,263],{"class":147},[130,1073,1004],{"class":259},[130,1075,256],{"class":147},[130,1077,1078],{"class":306},"fields",[130,1080,256],{"class":147},[130,1082,989],{"class":306},[130,1084,1085],{"class":147}," ==",[130,1087,1088],{"class":259}," quest",[130,1090,256],{"class":147},[130,1092,1093],{"class":306},"row",[130,1095,256],{"class":147},[130,1097,327],{"class":306},[130,1099,219],{"class":147},[130,1101,1102,1104,1106,1108,1110,1112,1114],{"class":132,"line":208},[130,1103,420],{"class":140},[130,1105,256],{"class":147},[130,1107,1042],{"class":259},[130,1109,263],{"class":147},[130,1111,989],{"class":259},[130,1113,310],{"class":147},[130,1115,1116],{"class":313},"  # works\n",[363,1118,1119,1129],{},[453,1120,1121],{},[456,1122,1123,1125,1127],{},[459,1124,461],{},[459,1126,464],{},[459,1128,467],{},[469,1130,1131,1145,1159,1174],{},[456,1132,1133,1138,1142],{},[474,1134,1135],{},[116,1136,1137],{},"parent_class",[474,1139,1140],{},[116,1141,482],{},[474,1143,1144],{},"Name of the parent model class",[456,1146,1147,1152,1156],{},[474,1148,1149],{},[116,1150,1151],{},"child_class",[474,1153,1154],{},[116,1155,482],{},[474,1157,1158],{},"Name of the child model class that still has rows",[456,1160,1161,1165,1169],{},[474,1162,1163],{},[116,1164,879],{},[474,1166,1167],{},[116,1168,482],{},[474,1170,886,1171,1173],{},[116,1172,787],{}," field on the child",[456,1175,1176,1180,1184],{},[474,1177,1178],{},[116,1179,345],{},[474,1181,1182],{},[116,1183,482],{},[474,1185,512],{},[112,1187,1188,1189,1191,1192,1194,1195,1199],{},"Note that ",[116,1190,1137],{}," and ",[116,1193,1151],{}," are class ",[1196,1197,1198],"em",{},"names"," (strings), not the classes themselves.",[221,1201,1203],{"id":1202},"viewalreadyexistserror","ViewAlreadyExistsError",[112,1205,227,1206,1212],{},[229,1207,1209],{"href":1208},"/api/collection#create_view",[116,1210,1211],{},"create_view()"," is called for a view that already exists.",[121,1214,1216],{"className":123,"code":1215,"language":125,"meta":126,"style":126},"coll.create_view(\"dashboard\", Sensor)\ncoll.create_view(\"dashboard\", Sensor)  # raises ViewAlreadyExistsError\n",[116,1217,1218,1242],{"__ignoreMap":126},[130,1219,1220,1222,1224,1227,1229,1231,1234,1236,1238,1240],{"class":132,"line":133},[130,1221,420],{"class":140},[130,1223,256],{"class":147},[130,1225,1226],{"class":259},"create_view",[130,1228,263],{"class":147},[130,1230,407],{"class":147},[130,1232,1233],{"class":410},"dashboard",[130,1235,407],{"class":147},[130,1237,270],{"class":147},[130,1239,273],{"class":259},[130,1241,219],{"class":147},[130,1243,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264],{"class":132,"line":151},[130,1245,420],{"class":140},[130,1247,256],{"class":147},[130,1249,1226],{"class":259},[130,1251,263],{"class":147},[130,1253,407],{"class":147},[130,1255,1233],{"class":410},[130,1257,407],{"class":147},[130,1259,270],{"class":147},[130,1261,273],{"class":259},[130,1263,310],{"class":147},[130,1265,1266],{"class":313},"  # raises ViewAlreadyExistsError\n",[363,1268,1269,1279],{},[453,1270,1271],{},[456,1272,1273,1275,1277],{},[459,1274,461],{},[459,1276,464],{},[459,1278,467],{},[469,1280,1281,1295],{},[456,1282,1283,1288,1292],{},[474,1284,1285],{},[116,1286,1287],{},"view_name",[474,1289,1290],{},[116,1291,482],{},[474,1293,1294],{},"Name of the existing view",[456,1296,1297,1301,1305],{},[474,1298,1299],{},[116,1300,345],{},[474,1302,1303],{},[116,1304,482],{},[474,1306,512],{},[112,1308,528,1309,1312],{},[116,1310,1311],{},"overwrite=True"," to replace the existing view.",[221,1314,1316],{"id":1315},"valuesnothydratederror","ValuesNotHydratedError",[112,1318,1319,1320,1323,1324,1328],{},"Raised when accessing ",[116,1321,1322],{},".df"," on a time-series model whose values haven't been loaded. See ",[229,1325,1327],{"href":1326},"/advanced/time-series#skip-loading-values","Time-Series — Skip loading values"," for details.",[121,1330,1332],{"className":123,"code":1331,"language":125,"meta":126,"style":126},"station = stations.read_object_by_id(1, WeatherStation, hydrate_values=False)\nstation.df  # raises ValuesNotHydratedError\n",[116,1333,1334,1366],{"__ignoreMap":126},[130,1335,1336,1339,1341,1344,1346,1348,1350,1353,1355,1358,1360,1363],{"class":132,"line":133},[130,1337,1338],{"class":140},"station ",[130,1340,394],{"class":147},[130,1342,1343],{"class":140}," stations",[130,1345,256],{"class":147},[130,1347,260],{"class":259},[130,1349,263],{"class":147},[130,1351,1352],{"class":266},"1",[130,1354,270],{"class":147},[130,1356,1357],{"class":259}," WeatherStation",[130,1359,270],{"class":147},[130,1361,1362],{"class":401}," hydrate_values",[130,1364,1365],{"class":147},"=False)\n",[130,1367,1368,1371,1373,1376],{"class":132,"line":151},[130,1369,1370],{"class":140},"station",[130,1372,256],{"class":147},[130,1374,1375],{"class":306},"df",[130,1377,1378],{"class":313},"  # raises ValuesNotHydratedError\n",[221,1380,1382],{"id":1381},"threadsafetyerror","ThreadSafetyError",[112,1384,1385,1386,779,1389,1392,1393,1396,1397,1400],{},"Raised when creating an ",[116,1387,1388],{},"AsyncCollection",[116,1390,1391],{},"AsyncTimeSeriesCollection"," with an engine that has ",[116,1394,1395],{},"check_same_thread=True"," (the SQLite default). See ",[229,1398,69],{"href":1399},"/advanced/async#setup"," for the correct setup.",[121,1402,1404],{"className":123,"code":1403,"language":125,"meta":126,"style":126},"engine = Engine(\"my.db\")  # check_same_thread=True by default\nAsyncCollection(engine, \"monitoring\")  # raises ThreadSafetyError\n",[116,1405,1406,1430],{"__ignoreMap":126},[130,1407,1408,1411,1413,1416,1418,1420,1423,1425,1427],{"class":132,"line":133},[130,1409,1410],{"class":140},"engine ",[130,1412,394],{"class":147},[130,1414,1415],{"class":259}," Engine",[130,1417,263],{"class":147},[130,1419,407],{"class":147},[130,1421,1422],{"class":410},"my.db",[130,1424,407],{"class":147},[130,1426,310],{"class":147},[130,1428,1429],{"class":313},"  # check_same_thread=True by default\n",[130,1431,1432,1434,1436,1439,1441,1444,1447,1449,1451],{"class":132,"line":151},[130,1433,1388],{"class":259},[130,1435,263],{"class":147},[130,1437,1438],{"class":259},"engine",[130,1440,270],{"class":147},[130,1442,1443],{"class":147}," \"",[130,1445,1446],{"class":410},"monitoring",[130,1448,407],{"class":147},[130,1450,310],{"class":147},[130,1452,1453],{"class":313},"  # raises ThreadSafetyError\n",[112,1455,1456,1457,119],{},"Fix by setting ",[116,1458,1459],{},"check_same_thread=False",[121,1461,1463],{"className":123,"code":1462,"language":125,"meta":126,"style":126},"engine = Engine(\"my.db\", check_same_thread=False)\nAsyncCollection(engine, \"monitoring\")  # works\n",[116,1464,1465,1488],{"__ignoreMap":126},[130,1466,1467,1469,1471,1473,1475,1477,1479,1481,1483,1486],{"class":132,"line":133},[130,1468,1410],{"class":140},[130,1470,394],{"class":147},[130,1472,1415],{"class":259},[130,1474,263],{"class":147},[130,1476,407],{"class":147},[130,1478,1422],{"class":410},[130,1480,407],{"class":147},[130,1482,270],{"class":147},[130,1484,1485],{"class":401}," check_same_thread",[130,1487,1365],{"class":147},[130,1489,1490,1492,1494,1496,1498,1500,1502,1504,1506],{"class":132,"line":151},[130,1491,1388],{"class":259},[130,1493,263],{"class":147},[130,1495,1438],{"class":259},[130,1497,270],{"class":147},[130,1499,1443],{"class":147},[130,1501,1446],{"class":410},[130,1503,407],{"class":147},[130,1505,310],{"class":147},[130,1507,1116],{"class":313},[1509,1510,1511],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":126,"searchDepth":151,"depth":151,"links":1513},[1514,1515,1516,1517,1518,1519,1520,1521],{"id":223,"depth":151,"text":224},{"id":371,"depth":151,"text":372},{"id":539,"depth":151,"text":540},{"id":771,"depth":151,"text":772},{"id":918,"depth":151,"text":919},{"id":1202,"depth":151,"text":1203},{"id":1315,"depth":151,"text":1316},{"id":1381,"depth":151,"text":1382},"API reference for all CentauroDB exception classes.","md",null,{},{"icon":105},{"title":102,"description":1522},"ATuik7i6zSbSqwCM9u5DjjzHWvoAMj8QejMWcZzAFys",[1530,1524],{"title":33,"path":99,"stem":100,"description":1531,"icon":36,"children":-1},"API reference for CentauroModel, CentauroModelSeries, CentauroValues, and RowFields.",1781105063240]