UPDATE
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import MySQLdb
|
||||
from dotenv import dotenv_values
|
||||
|
||||
TABLES = [
|
||||
"location_data_soillocation",
|
||||
"location_data_blocksubdivision",
|
||||
"location_data_remotesensingrun",
|
||||
"location_data_remotesensingsubdivisionresult",
|
||||
"location_data_remotesensingclusterblock",
|
||||
"location_data_remotesensingclusterassignment",
|
||||
"location_data_analysisgridcell",
|
||||
"location_data_analysisgridobservation",
|
||||
"location_data_remotesensingsubdivisionoption",
|
||||
"location_data_remotesensingsubdivisionoptionblock",
|
||||
"location_data_remotesensingsubdivisionoptionassignment",
|
||||
"dashboard_data_ndviobservation",
|
||||
]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
env = dotenv_values(Path(__file__).resolve().parent.parent / ".env")
|
||||
conn = MySQLdb.connect(
|
||||
host=env.get("DB_HOST", "127.0.0.1"),
|
||||
port=int(env.get("DB_PORT", 3306)),
|
||||
user=env.get("DB_USER", ""),
|
||||
passwd=env.get("DB_PASSWORD", ""),
|
||||
db=env.get("DB_NAME", ""),
|
||||
charset="utf8mb4",
|
||||
)
|
||||
out: dict[str, list[dict]] = {}
|
||||
try:
|
||||
with conn as cursor:
|
||||
for table in TABLES:
|
||||
cursor.execute(f"SELECT * FROM {table}")
|
||||
columns = [col[0] for col in cursor.description]
|
||||
rows = []
|
||||
for raw_row in cursor.fetchall():
|
||||
row = {}
|
||||
for key, value in zip(columns, raw_row):
|
||||
if isinstance(value, (bytes, bytearray)):
|
||||
value = value.decode("utf-8")
|
||||
row[key] = value
|
||||
rows.append(row)
|
||||
out[table] = rows
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
print(json.dumps(out, ensure_ascii=False, indent=2, default=str))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user