āĻāĻ āĻāĻŽāĻŋ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§ āĻā§āĻŦāĻŋāĻ˛ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻ˛ā§āĻāĻž āĻāĻāĻāĻŋ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻ¸āĻš āĻšāĻžāĻŦāĻ° āĻĒāĻžāĻ āĻāĻĻā§āĻ° āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻ° API āĻ¸āĻšāĻ āĻāĻŦāĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤:
- āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°_āĻ¸āĻžāĻ°āĻŖā§ - āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§ āĻ¸āĻš āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°/āĻ¸āĻžāĻ°āĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž
- get_table_references â āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻ¨ (āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ āĻĻā§āĻāĻžāĻŦā§ āĻāĻŦāĻ āĻ¯āĻžāĻ°āĻž āĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻā§)
- āĻĒā§āĻ¤ā§_āĻ¸āĻžāĻ°āĻŋ_āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ - āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¯āĻž āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻžāĻ°āĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§
āĻĒā§āĻ°āĻžāĻāĻāĻ¤āĻŋāĻšāĻžāĻ¸āĻŋāĻ
āĻāĻŽāĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻ˛ā§āĻ āĻŦā§āĻ°ā§āĻāĻ, āĻāĻŽāĻŋ āĻĄā§āĻŽāĻā§āĻ˛āĻŋāĻā§āĻ° āĻŦāĻ¨ā§āĻ§āĻā§ āĻāĻŖāĻĻāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ CRM āĻāĻŋāĻŽā§āĻ° āĻāĻāĻāĻ¨ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° CRM āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻāĻ˛āĻŋāĻāĻŽā§āĻ° āĻĻāĻŋāĻ āĻĨā§āĻā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŦāĻĄāĻŧāĨ¤ āĻāĻāĻŋāĻ āĻĒā§āĻ°āĻžāĻā§āĻ¨āĻ¤āĻŽāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ: āĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻā§āĻŦāĻžāĻ°ā§ āĻ˛āĻā§āĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻāĻ¨ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻŦāĻĄāĻŧ āĻāĻŋāĻ˛, āĻ¤āĻāĻ¨ āĻĄāĻŽāĻā§āĻ˛āĻŋāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻžāĻ°ā§āĻāĻāĻĒ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĢā§āĻ¯āĻžāĻļāĻ¨ā§āĻŦāĻ˛ āĻĒāĻžāĻāĻĨāĻ¨ āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ-āĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻŽāĻ¨ā§āĻ˛āĻŋāĻĨ āĻāĻŋāĻ˛āĨ¤
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻĨā§āĻā§ āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻāĻŋ āĻā§āĻŦ āĻĻā§āĻ°ā§āĻ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻ¯āĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻāĻ¯ā§āĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¯āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¨āĻāĻļāĻžāĻā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋāĻ˛āĨ¤
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻŖā§āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻā§āĻā§āĻ āĻ¸ā§āĻā§ āĻ¸āĻš āĻĒā§āĻ°āĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻ āĻ āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻŦāĻ āĻŦāĻŋāĻļāĻžāĻ˛ āĻā§āĻŦāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻ¤āĻŋāĻŦāĻžāĻāĻāĻāĻžāĻŦā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻžāĻā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§: āĻŦāĻĄāĻŧ āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻā§āĻā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ° āĻāĻžāĻ°āĻŖā§, āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒāĻžāĻā§āĻā§, āĻ¯āĻž āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ˛ā§āĻĄ āĻāĻŽāĻžāĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯āĻž āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŦāĻĄāĻŧ āĻāĻŦāĻ āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ āĻĨā§āĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻŦā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĨā§āĻā§ task
в task_archive
).
āĻāĻ āĻāĻžāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦā§āĻšā§ āĻ¸āĻāĻā§āĻ¯āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻāĻŋāĻ˛: āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻ°āĻžāĻ¨ task
в task_archive
āĻ¯āĻĨā§āĻˇā§āĻ āĻ¨āĻ¯āĻŧ, āĻ¤āĻžāĻ° āĻāĻā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ āĻāĻāĻ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ task
āĻā§āĻŦāĻŋāĻ˛
āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻāĻŋāĻ¯āĻŧā§ āĻĻā§āĻāĻžāĻŦ
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻ°ā§āĻāĻ°ā§āĻĄ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻšāĻŦā§ Flights
. āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻāĻŽāĻžāĻĻā§āĻ°āĻā§ āĻ āĻŋāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§ āĻ¨āĻž: āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĻŋāĻ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻšāĻŦā§, āĻāĻŦāĻ āĻāĻāĻāĻāĻžāĻŦā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻāĻžāĻŦā§ āĻ¨ā§āĻā§āĻ° āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¯āĻž āĻā§āĻ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§ āĻ¨āĻžāĨ¤
āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ Flights
āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§ Ticket_flights
, āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻāĻĒāĻ° - Boarding_passes
.
āĻ āĻ¤āĻāĻŦ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ āĻā§āĻ°āĻŽā§ āĻāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻšāĻŦā§:
- āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ°āĻŋāĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§ (PK) āĻŽāĻžāĻ¨ āĻĒāĻžāĻ
Ticket_flights
, āĻ¯āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§Flights
. - āĻāĻŽāĻ°āĻž PK āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ¤ā§
Boarding_passes
, āĻ¯āĻž āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĻ¨Ticket_flights
. - āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ§āĻžāĻĒ 2 āĻĨā§āĻā§ PK āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻžāĻ°āĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻŋ
Boarding_passes
. - āĻ§āĻžāĻĒ 1 āĻĨā§āĻā§ PK āĻĻā§āĻŦāĻžāĻ°āĻž āĻ˛āĻžāĻāĻ¨ āĻŽā§āĻā§āĻ¨
Ticket_flights
. - āĻĨā§āĻā§ āĻ˛āĻžāĻāĻ¨ āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖ
Flights
.
āĻĢāĻ˛āĻžāĻĢāĻ˛āĻāĻŋ āĻāĻŋāĻ˛ PgGraph āĻ¨āĻžāĻŽāĻ āĻāĻāĻāĻŋ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤
āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨
āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻĻā§āĻāĻŋ āĻŽā§āĻĄ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§:
- āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻĨā§āĻā§ āĻāĻ˛ āĻāĻ°ā§āĻ¨ (
pggraph âĻ
). - āĻĒāĻžāĻāĻĨāĻ¨ āĻā§āĻĄā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° (āĻļā§āĻ°ā§āĻŖā§
PgGraphApi
).
āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻĒāĻ¨āĻžāĻā§ Pypi āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĨā§āĻā§ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
pip3 install pggraph
āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻāĻ°ā§āĻāĻžāĻāĻāĻŋāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¸āĻš āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻāĻāĻāĻŋ config.ini āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
[db]
host = localhost
port = 5432
user = postgres
password = postgres
dbname = postgres
schema = public ; ĐĐĩОйŅСаŅĐĩĐģŅĐŊŅĐš ĐŋĐ°ŅĐ°ĐŧĐĩŅŅ, ŅĐēаСаĐŊĐž СĐŊĐ°ŅĐĩĐŊиĐĩ ĐŋĐž ŅĐŧĐžĐģŅĐ°ĐŊиŅ
[archive] ; ĐĐ°ĐŊĐŊŅĐš ŅаСдĐĩĐģ СаĐŋĐžĐģĐŊŅŅŅ ĐŊĐĩОйŅСаŅĐĩĐģŅĐŊĐž, ĐŊиĐļĐĩ ŅĐēаСаĐŊŅ СĐŊĐ°ŅĐĩĐŊиŅ ĐŋĐž ŅĐŧĐžĐģŅĐ°ĐŊиŅ
is_debug = false
chunk_size = 1000
max_depth = 20
to_archive = true
archive_suffix = 'archive'
āĻāĻ¨āĻ¸ā§āĻ˛ āĻĨā§āĻā§ āĻāĻžāĻ˛āĻžāĻ¨
āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ
$ pggraph -h
usage: pggraph action [-h] --table TABLE [--ids IDS] [--config_path CONFIG_PATH]
positional arguments:
action required action: archive_table, get_table_references, get_rows_references
optional arguments:
-h, --help show this help message and exit
--table TABLE table name
--ids IDS primary key ids, separated by comma, e.g. 1,2,3
--config_path CONFIG_PATH path to config.ini
--log_path LOG_PATH path to log dir
--log_level LOG_LEVEL log level (debug, info, error)
āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨āĻāĻ¤ āĻ¯ā§āĻā§āĻ¤āĻŋ:
action
- āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻĻāĻā§āĻˇā§āĻĒ:archive_table
,get_table_references
āĻŦāĻžget_rows_references
.
āĻ¨āĻžāĻŽāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ:
--config_path
â āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻĨ;--table
- āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¯āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§;--ids
â āĻāĻŽāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻĨāĻ āĻāĻ°āĻž āĻāĻāĻĄāĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ,1,2,3
(āĻāĻā§āĻāĻŋāĻ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ);--log_path
â āĻ˛āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻĒāĻĨ (āĻāĻā§āĻāĻŋāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°, āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ â āĻšā§āĻŽ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°);--log_level
â āĻ˛āĻāĻŋāĻ āĻ˛ā§āĻā§āĻ˛ (āĻāĻā§āĻāĻŋāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°, āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻšāĻ˛ INFO)āĨ¤
āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°
āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻ āĻšāĻ˛ āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°, āĻ¯ā§āĻŽāĻ¨ āĻŽā§āĻ˛ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻāĻ°ā§āĻāĻžāĻāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸āĻžāĻ°āĻŋ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻŦāĻ в book_archive).
āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻāĻžāĻĄāĻŧāĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤: āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ config.ini āĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ to_archive = āĻŽāĻŋāĻĨā§āĻ¯āĻž).
āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° - config_path, āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻĄāĻŋ.
āĻ˛āĻā§āĻā§āĻ° āĻĒāĻ°ā§, āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻāĻžāĻŦā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻŦā§ ids
āĻā§āĻŦāĻŋāĻ˛ā§ table
āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¯āĻž āĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĨ¤
$ pggraph archive_table --config_path config.hw.local.ini --table flights --ids 1,2,3
2020-06-20 19:27:44 INFO: flights - START
2020-06-20 19:27:44 INFO: flights - start archive_recursive 3 rows (depth=0)
2020-06-20 19:27:44 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: ticket_flights - start archive_recursive 3 rows (depth=1)
2020-06-20 19:27:44 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: boarding_passes - start archive_recursive 3 rows (depth=2)
2020-06-20 19:27:44 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: boarding_passes - archive_by_ids 3 rows by ticket_no, flight_id
2020-06-20 19:27:44 INFO: boarding_passes - start archive_recursive 3 rows (depth=2)
2020-06-20 19:27:44 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: boarding_passes - archive_by_ids 3 rows by ticket_no, flight_id
2020-06-20 19:27:44 INFO: boarding_passes - start archive_recursive 3 rows (depth=2)
2020-06-20 19:27:44 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: boarding_passes - archive_by_ids 3 rows by ticket_no, flight_id
2020-06-20 19:27:44 INFO: boarding_passes - start archive_recursive 3 rows (depth=2)
2020-06-20 19:27:44 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: boarding_passes - archive_by_ids 3 rows by ticket_no, flight_id
2020-06-20 19:27:44 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: ticket_flights - archive_by_ids 3 rows by ticket_no, flight_id
2020-06-20 19:27:44 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 19:27:44 INFO: flights - archive_by_ids 3 rows by id
2020-06-20 19:27:44 INFO: flights - END
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻā§āĻāĻā§āĻ¨
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨ table
. āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° - config_path
и table
.
āĻ˛āĻā§āĻā§āĻ° āĻĒāĻ°ā§, āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻ§āĻžāĻ¨ āĻĒāĻ°ā§āĻĻāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§, āĻ¯ā§āĻāĻžāĻ¨ā§:
in_refs
â āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻ§āĻžāĻ¨, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¨āĻžāĻŽ, āĻŽāĻžāĻ¨āĻāĻŋ āĻŦāĻŋāĻĻā§āĻļā§ āĻā§ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž (pk_main
- āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻŦāĻŋāĻ˛ā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§,pk_ref
- āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĻŋāĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§,fk_ref
â āĻā§āĻ¸ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŦāĻŋāĻĻā§āĻļā§ āĻā§ āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¨āĻžāĻŽ;out_refs
- āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻ§āĻžāĻ¨ āĻ¯āĻž āĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĨ¤
$ pggraph get_table_references --config_path config.hw.local.ini --table flights
{'in_refs': {'ticket_flights': [ForeignKey(pk_main='flight_id', pk_ref='ticket_no, flight_id', fk_ref='flight_id')]},
'out_refs': {'aircrafts': [ForeignKey(pk_main='aircraft_code', pk_ref='flight_id', fk_ref='aircraft_code')],
'airports': [ForeignKey(pk_main='airport_code', pk_ref='flight_id', fk_ref='arrival_airport'),
ForeignKey(pk_main='airport_code', pk_ref='flight_id', fk_ref='departure_airport')]}}
āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ-āĻāĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻā§āĻāĻāĻž
āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸āĻžāĻ°āĻŋ āĻ
āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻ¯āĻž āĻŦāĻŋāĻĻā§āĻļā§ āĻā§ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ ids
āĻā§āĻŦāĻŋāĻ˛ table
. āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° - config_path
, table
и ids
.
āĻ˛āĻā§āĻā§āĻ° āĻĒāĻ°ā§, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻžāĻ āĻžāĻŽā§ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻ§āĻžāĻ¨ āĻĒāĻ°ā§āĻĻāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§:
{
pk_id_1: {
reffering_table_name_1: {
foreign_key_1: [
{row_pk_1: value, row_pk_2: value},
...
],
...
},
...
},
pk_id_2: {...},
...
}
āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻ˛:
$ pggraph get_rows_references --config_path config.hw.local.ini --table flights --ids 1,2,3
{1: {'ticket_flights': {'flight_id': [{'flight_id': 1,
'ticket_no': '0005432816945'},
{'flight_id': 1,
'ticket_no': '0005432816941'}]}},
2: {'ticket_flights': {'flight_id': [{'flight_id': 2,
'ticket_no': '0005433101832'},
{'flight_id': 2,
'ticket_no': '0005433101864'},
{'flight_id': 2,
'ticket_no': '0005432919715'}]}},
3: {'ticket_flights': {'flight_id': [{'flight_id': 3,
'ticket_no': '0005432817560'},
{'flight_id': 3,
'ticket_no': '0005432817568'},
{'flight_id': 3,
'ticket_no': '0005432817559'}]}}}
āĻā§āĻĄā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°
āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻā§āĻĄā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ iPython āĻāĻ¨ā§āĻāĻžāĻ°ā§āĻā§āĻāĻŋāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻ˛ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¨ā§āĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°
>>> from pg_graph.main import setup_logging
>>> setup_logging(log_level='DEBUG')
>>> from pg_graph.api import PgGraphApi
>>> api = PgGraphApi('config.hw.local.ini')
>>> api.archive_table('flights', [4,5])
2020-06-20 23:12:08 INFO: flights - START
2020-06-20 23:12:08 INFO: flights - start archive_recursive 2 rows (depth=0)
2020-06-20 23:12:08 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 DEBUG: ticket_flights - ForeignKey(pk_main='flight_id', pk_ref='flight_id, ticket_no', fk_ref='flight_id')
2020-06-20 23:12:08 DEBUG: SQL('SELECT flight_id, ticket_no FROM bookings.ticket_flights WHERE (flight_id) IN (%s, %s)')
2020-06-20 23:12:08 INFO: ticket_flights - start archive_recursive 30 rows (depth=1)
2020-06-20 23:12:08 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 DEBUG: boarding_passes - ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 INFO: boarding_passes - archive_by_fk 30 rows by ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.boarding_passes_archive (LIKE bookings.boarding_passes)')
2020-06-20 23:12:08 DEBUG: DELETE FROM boarding_passes by FK flight_id, ticket_no - 30 rows
2020-06-20 23:12:08 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 INFO: ticket_flights - archive_by_ids 30 rows by flight_id, ticket_no
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.ticket_flights_archive (LIKE bookings.ticket_flights)')
2020-06-20 23:12:08 DEBUG: DELETE FROM ticket_flights by flight_id, ticket_no - 30 rows
2020-06-20 23:12:08 DEBUG: INSERT INTO ticket_flights_archive - 30 rows
2020-06-20 23:12:08 INFO: ticket_flights - start archive_recursive 30 rows (depth=1)
2020-06-20 23:12:08 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 DEBUG: boarding_passes - ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 INFO: boarding_passes - archive_by_fk 30 rows by ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.boarding_passes_archive (LIKE bookings.boarding_passes)')
2020-06-20 23:12:08 DEBUG: DELETE FROM boarding_passes by FK flight_id, ticket_no - 30 rows
2020-06-20 23:12:08 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 INFO: ticket_flights - archive_by_ids 30 rows by flight_id, ticket_no
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.ticket_flights_archive (LIKE bookings.ticket_flights)')
2020-06-20 23:12:08 DEBUG: DELETE FROM ticket_flights by flight_id, ticket_no - 30 rows
2020-06-20 23:12:08 DEBUG: INSERT INTO ticket_flights_archive - 30 rows
2020-06-20 23:12:08 INFO: ticket_flights - start archive_recursive 30 rows (depth=1)
2020-06-20 23:12:08 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 DEBUG: boarding_passes - ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 INFO: boarding_passes - archive_by_fk 30 rows by ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.boarding_passes_archive (LIKE bookings.boarding_passes)')
2020-06-20 23:12:08 DEBUG: DELETE FROM boarding_passes by FK flight_id, ticket_no - 30 rows
2020-06-20 23:12:08 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 INFO: ticket_flights - archive_by_ids 30 rows by flight_id, ticket_no
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.ticket_flights_archive (LIKE bookings.ticket_flights)')
2020-06-20 23:12:08 DEBUG: DELETE FROM ticket_flights by flight_id, ticket_no - 30 rows
2020-06-20 23:12:08 DEBUG: INSERT INTO ticket_flights_archive - 30 rows
2020-06-20 23:12:08 INFO: ticket_flights - start archive_recursive 3 rows (depth=1)
2020-06-20 23:12:08 INFO: START ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 DEBUG: boarding_passes - ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 INFO: boarding_passes - archive_by_fk 3 rows by ForeignKey(pk_main='flight_id, ticket_no', pk_ref='flight_id, ticket_no', fk_ref='flight_id, ticket_no')
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.boarding_passes_archive (LIKE bookings.boarding_passes)')
2020-06-20 23:12:08 DEBUG: DELETE FROM boarding_passes by FK flight_id, ticket_no - 3 rows
2020-06-20 23:12:08 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 INFO: ticket_flights - archive_by_ids 3 rows by flight_id, ticket_no
2020-06-20 23:12:08 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.ticket_flights_archive (LIKE bookings.ticket_flights)')
2020-06-20 23:12:08 DEBUG: DELETE FROM ticket_flights by flight_id, ticket_no - 3 rows
2020-06-20 23:12:08 DEBUG: INSERT INTO ticket_flights_archive - 3 rows
2020-06-20 23:12:08 INFO: END ARCHIVE REFERRING TABLES
2020-06-20 23:12:08 INFO: flights - archive_by_ids 2 rows by flight_id
2020-06-20 23:12:09 DEBUG: SQL('CREATE TABLE IF NOT EXISTS bookings.flights_archive (LIKE bookings.flights)')
2020-06-20 23:12:09 DEBUG: DELETE FROM flights by flight_id - 2 rows
2020-06-20 23:12:09 DEBUG: INSERT INTO flights_archive - 2 rows
2020-06-20 23:12:09 INFO: flights - END
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻā§āĻāĻā§āĻ¨
>>> from pg_graph.api import PgGraphApi
>>> from pprint import pprint
>>> api = PgGraphApi('config.hw.local.ini')
>>> res = api.get_table_references('flights')
>>> pprint(res)
{'in_refs': {'ticket_flights': [ForeignKey(pk_main='flight_id', pk_ref='flight_id, ticket_no', fk_ref='flight_id')]},
'out_refs': {'aircrafts': [ForeignKey(pk_main='aircraft_code', pk_ref='flight_id', fk_ref='aircraft_code')],
'airports': [ForeignKey(pk_main='airport_code', pk_ref='flight_id', fk_ref='arrival_airport'),
ForeignKey(pk_main='airport_code', pk_ref='flight_id', fk_ref='departure_airport')]}}
āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ-āĻāĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻā§āĻāĻāĻž
>>> from pg_graph.api import PgGraphApi
>>> from pprint import pprint
>>> api = PgGraphApi('config.hw.local.ini')
>>> rows = api.get_rows_references('flights', [1,2,3])
>>> pprint(rows)
{1: {'ticket_flights': {'flight_id': [{'flight_id': 1,
'ticket_no': '0005432816945'},
{'flight_id': 1,
'ticket_no': '0005432816941'}]}},
2: {'ticket_flights': {'flight_id': [{'flight_id': 2,
'ticket_no': '0005433101832'},
{'flight_id': 2,
'ticket_no': '0005433101864'},
{'flight_id': 2,
'ticket_no': '0005432919715'}]}},
3: {'ticket_flights': {'flight_id': [{'flight_id': 3,
'ticket_no': '0005432817560'},
{'flight_id': 3,
'ticket_no': '0005432817568'},
{'flight_id': 3,
'ticket_no': '0005432817559'}]}}}
āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻāĻāĻžāĻ¨ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ
āĻāĻŽāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯, āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻāĻŦāĻ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻā§āĻļāĻŋ āĻšāĻŦā§.
āĻāĻŽāĻŋ āĻāĻāĻžāĻ¨ā§ āĻāĻŦāĻ āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§ āĻāĻŽāĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ¸ā§āĻ°āĻž āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¤ā§āĻ¤āĻ° āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com