Ugrás a fő tartalomra

SQLServer adatmodell generálása python-ból

 SQLServer adatmodell generálása python-ból


SQL Server adatmodell generálása Python kóddal több lépésben automatizálhatóan megvalósítható, különböző eszközökkel és könyvtárakkal. Az egyik megoldás az SQL Server adatbázis metaadatainak lekérdezése, majd az adatmodell vizuális ábrázolása, például PlantUML diagram formájában. 

Itt egy egyszerűbb megközelítést mutatok, amely SQL Serverből adatokat olvas be és generál egy alapvető adatmodellt.

Lépések:

  1. SQL Server kapcsolódás – használjuk a pyodbc könyvtárat a SQL Serverhez való kapcsolódáshoz.
  2. Metaadatok lekérése – SQL Server táblák, oszlopok, kulcsok stb. lekérése a megfelelő SQL lekérdezések segítségével.
  3. Adatmodell létrehozása – Az adatbázis struktúrájának vizuális megjelenítése, például PlantUML használatával.

1. Szükséges könyvtárak telepítése

A kód futtatásához szükség van a következő Python könyvtárak telepítésére:

-- bash

pip install pyodbc pip install plantuml
  • pyodbc: Ez a könyvtár lehetővé teszi, hogy Python kódból SQL Server adatbázishoz csatlakozzunk.
  • plantuml: Ha az adatmodell ábrázolására PlantUML-t szeretnénk használni, akkor ezt a könyvtárat is szükséges telepíteni.


2. SQL Server kapcsolódás és metaadatok lekérése

Először is, csatlakozunk a SQL Server adatbázishoz és lekérdezzük az adatbázis tábláinak metaadatait, majd ezeket felhasználhatjuk az adatmodell generálásához.

--- python

import pyodbc # SQL Server kapcsolat conn = pyodbc.connect( 'DRIVER={ODBC Driver 17 for SQL Server};' 'SERVER=server_address;' 'DATABASE=database_name;' 'UID=username;' 'PWD=password' ) cursor = conn.cursor() # Lekérdezzük a táblák metaadatait cursor.execute(""" SELECT t.name AS table_name, c.name AS column_name, c.column_id, c.is_nullable, tp.name AS data_type FROM sys.tables AS t INNER JOIN sys.columns AS c ON t.object_id = c.object_id INNER JOIN sys.types AS tp ON c.user_type_id = tp.user_type_id WHERE t.is_ms_shipped = 0 ORDER BY t.name, c.column_id """) # Eredmények kiírása tables = cursor.fetchall() # Eredmények tárolása table_columns = {} for row in tables: table_name = row.table_name column_name = row.column_name data_type = row.data_type nullable = "YES" if row.is_nullable else "NO" if table_name not in table_columns: table_columns[table_name] = [] table_columns[table_name].append((column_name, data_type, nullable)) # Táblák és oszlopok kiírása for table, columns in table_columns.items(): print(f"Table: {table}") for column in columns: print(f" - {column[0]} ({column[1]}) Nullable: {column[2]}")


3. Adatmodell generálása PlantUML segítségével

Most, hogy megszereztük a táblák és azok oszlopainak metaadatait, generálhatunk egy PlantUML osztálydiagramot, amely bemutatja az adatmodell struktúráját.

--- python

# PlantUML kód generálása uml_code = "@startuml\n" for table, columns in table_columns.items(): uml_code += f"class {table} {{\n" for column in columns: uml_code += f" +{column[0]}: {column[1]} (Nullable: {column[2]})\n" uml_code += "}\n" uml_code += "@enduml" # Mentés fájlba with open("datamodel.puml", "w") as f: f.write(uml_code) print("PlantUML fájl létrehozva: datamodel.puml")


4. A generált PlantUML diagram megjelenítése

A fenti kód generál egy PlantUML-kódot, amely az adatmodellünket osztálydiagram formájában ábrázolja. Most megjeleníthetjük a diagramot, ha egy PlantUML renderelő eszközt használunk.

Ha PlantUML-t telepítettél a rendszeredre, akkor a következő parancsot használhatod:

-- bash

plantumlt datamodel.puml

Ez generál egy PNG fájlt, amely megjeleníti az adatmodellt.



5. Kép generálása és megjelenítése Pythonban

Ha szeretnéd a diagramot Pythonban közvetlenül megjeleníteni, használhatod az alábbi kódot:

-- python

import urllib.parse from IPython.display import Image # URL kódolás encoded_uml = urllib.parse.quote(uml_code) # URL a PlantUML szolgáltatás eléréséhez url = f'http://www.plantuml.com/plantuml/png/{encoded_uml}' # A diagram megjelenítése Image(url)



6. Összegzés

  • Kapcsolódás SQL Serverhez: A Python pyodbc könyvtárral csatlakozhatunk SQL Serverhez.
  • Metaadatok lekérése: SQL lekérdezésekkel kérhetjük le a táblák, oszlopok, típusok és egyéb metaadatok adatait.
  • Adatmodell generálása: A lekért adatokat felhasználva PlantUML kódot generálunk, amely ábrázolja az adatmodellt osztálydiagramként.
  • Diagram megjelenítése: A PlantUML segítségével a diagramot képként generálhatjuk, vagy online megjeleníthetjük.









Megjegyzések