paint-brush
Python - Django: Tsy tokony hametraka an'ity zavatra ity amin'ny fifampiraharahana ianaony@mta
Tantara vaovao

Python - Django: Tsy tokony hametraka an'ity zavatra ity amin'ny fifampiraharahana ianao

ny Michael T. Andemeskel17m2025/03/04
Read on Terminal Reader

Lava loatra; Mamaky

Ny fifampiraharahana dia ivon'ny fampiharana Django, fa raha mametraka ny kaody diso amin'ny fifanakalozana ianao dia mety hiteraka fahatapahana!
featured image - Python - Django: Tsy tokony hametraka an'ity zavatra ity amin'ny fifampiraharahana ianao
Michael T. Andemeskel HackerNoon profile picture


Votoaty

  • Fizarana 1 Famintinana - Mitsoraka lalina amin'ny Transaction Django
  • TLDR, Famintinana
  • Ahoana no mety hanimba ny fampiharana anay ny fifampiraharahana?
  • In
  • Risky
  • avy
  • Manaraka - Ahoana ny baikon'ny PSQL mifamatotra
  • loharanom-baovao

Fizarana 1 Famintinana - Mitsofoka lalina ao anatin'ny Transaction Django

Tao amin'ny lahatsoratra teo aloha, dia nianatra ny zava-mitranga rehefa antsoina ny asa voaravaka transaction.atomic ary inona no mitranga amin'ny with transaction.atomic() . Raha fintinina:


  1. Ny fifandraisana amin'ny DB dia noforonina na alaina.
  2. Misy fifampiraharahana noforonina, ohatra, BEGIN; dia alefa any amin'ny DB (raha PSQL na variana SQL hafa ny DB).
  3. Manomboka izao ka hatramin'ny fisian'ny asa na ny fanambaràna miaraka amin'ny famaranana - na misy hadisoana na mahomby - dia ao anatin'ny fifampiraharahana isika, ary miandry antsika i DB.
  4. Midika izany fa (farafaharatsiny ho an'ny ACID DBs toa ny PSQL) ny fifampiraharahana dia hihazona hidy eo amin'ny latabatra sy ny andalana izay miova.
  5. Rehefa vita ny asa Django DB, dia raisin'ny DB ny hidin-trano mifanaraka amin'izany ary manakana ny hetsika mifanipaka eo amin'io latabatra na andalana io.
  6. Izany dia mety hahatonga ny fifandraisana hafa ho tapitra noho ny fiandrasana ny hidin-trano hivoaka.
  7. Raha tsy mahomby ny fandidiana na raha misy hadisoana amin'ny fotoam-pivoriana, dia averin'ny DB ny fifampiraharahana manontolo ary avoakany ny hidin-trano.
  8. Raha mahomby ny fifampiraharahana manontolo, dia atao ny fanovana rehetra ary azo alaina amin'ny fifandraisana DB hafa.
  9. Navoaka ny hidin-trano.


Ankehitriny, hiresaka momba ny zavatra tokony hatao amin'ny fifampiraharahana sy ny tokony hialana isika. Noho ireto fitondran-tena manaraka ireto dia mampidi-doza ny hetsika sasany rehefa apetraka ao anaty sakana iray.


  • Ny fifampiraharahana dia mitazona hidy mandra-pahavitan'ny fifampiraharahana.
  • Ny fifampiraharahana dia mamadika ny fiasan'ny DB rehetra rehefa tsy mahomby izy ireo.
  • Mangataka hidin-trano ny Transactions raha vantany vao vita ny hetsika DB.

TLDR, Famintinana

In

  • Hetsika azo averina amin'ny DB - Raha tsy azo averina ny hetsika DB ary tsy mahomby ny fifampiraharahana, ny DB dia ho tavela amin'ny toe-javatra ratsy satria ny fifampiraharahana dia hanandrana hamerina ny fanovana ho azy, saingy tsy azo ovaina izy ireo, ka tsy hahomby.
  • Fampandehanana mifandraika amin'ny DB izay takiana - Tsy afaka mamorona firaketana kaonty amin'ny banky vaovao isika raha tsy misy firaketana mpampiasa, noho izany dia mila mamorona azy roa amin'ny fifampiraharahana mitovy.
  • Lojika raharaham-barotra azo averina sy mifandraika - Fikajiana ny totalin'ny fifandanjana ananan'ny mpanjifa aorian'ny famoronana firaketana kaonty vaovao miaraka amin'ny petra-bola (na izany aza dia azo esorina amin'ny fifampiraharahana miaraka amin'ny maodely sy fandrindrana mahay).

Risky

  • Fanontaniana miadana - Mazàna haingana ny fakana angona, afa-tsy ireo tranga telo ireo. Ireo fanontaniana ireo dia hampiadana ny fifampiraharahana ary hanitatra ny fotoana ihazoany hidy, izay hisy fiantraikany ratsy amin'ny mpampiasa hafa.
  • Hetsika amin'ny latabatra maromaro - Ny fifampiraharahana amin'ny asa amin'ny latabatra maromaro dia afaka manidy ny latabatra tsirairay mandra-pahavitany. Manjaka indrindra amin'ny fifindra-monina Django izany - antony iray hafa hitazonana ny fifindra-monina ho kely sy hifantoka amin'ny latabatra iray na vitsivitsy isaky ny mandeha.
  • Fifindran'ny angona - Satria ny fifampiraharahana dia mitazona hidin-trano manomboka amin'ny fotoana nanaovana ny fangatahana mandra-pahatapitry ny fifampiraharahana, ny fifindra-monina izay miasa amin'ny andalana tsirairay ao amin'ny latabatra dia hiafara amin'ny fanakatonana ny latabatra iray manontolo, na amin'ny alàlan'ny fisorohana ny famakiana na fanoratana isaky ny laharana.
  • (Ho an'ny PSQL sy SQLite ihany*) Fanovana tabilao na tsanganana - mitaky ny endrika hidin-trano henjana ireo asa ireo ary noho izany dia hanakana ny famakiana/soratra eo amin'ny latabatra manontolo. Ireo hetsika ireo no tena mety hiteraka fahatapahana.

avy

  • Hetsika tsy azo ivalozana - Ny zavatra rehetra ao anatin'ny fifampiraharahana dia tokony ho azo averina raha toa ka averina ny fifampiraharahana; raha mametraka antso API amin'ny fifampiraharahana isika dia tsy azo averina.
  • Ny fanakanana ny antso - Satria ny fifampiraharahana dia manakana ny fanontaniana hafa rehetra tsy hiasa amin'ny latabatra/laharana dia miova ny fifampiraharahana, izay fehezan-dalàna izay mampitombo ny faharetan'ny fifampiraharahana dia hahatonga ny DB hihidy, ka miteraka fotoana sy tsy fandraisana andraikitra amin'ny fampiharana miankina amin'ny DB.


Tohizo ny famakiana momba ireo safidy hafa sy ohatra kaody.

Ahoana no mety hanimba ny fampiharanay ny Transaction?

Ny risika voalohany dia ny fihazonana hidin-trano ny fifampiraharahana mandra-pahavitan'izy ireo mba hisorohana ny hetsika mifanipaka eo amin'ny latabatra sy ny laharana ary mamela ny fifampiraharahana ho azo averina - ilaina izany mba hahatonga ny hetsika DB amin'ny fifampiraharahana atomika. Midika izany fa ny fifampiraharahana maharitra izay miasa amin'ny latabatra maromaro na ireo mitsikera vitsivitsy dia mety hiteraka fahatapahan-jiro amin'ny alàlan'ny fanidiana hidin-trano sy hisorohana ny famakiana/manoratra amin'ireo latabatra/lahatra ireo.


Raha ny tena izy, raha mametraka ny kaody diso ao amin'ny sakana ara-barotra isika, dia afaka manaisotra ny DB amin'ny fomba mahomby amin'ny fanakanana ny fifandraisana hafa rehetra amin'ny DB tsy hanao asa momba izany.


Ny risika faharoa dia ny fifampiraharahana dia mila azo averina ary antenaina ho azo averina. Ny DB dia mamadika ho azy ny asa rehetra raha misy hadisoana mitranga amin'ny fifanakalozana. Noho izany, ny hetsika DB napetrakay amin'ny fifampiraharahana dia tokony ho azo averina - amin'ny ankapobeny, tsy mila manahy momba izany amin'ny PSQL isika. Ahoana anefa ny amin'ny kaody hafa?


Matetika, rehefa manova ny angonay izahay dia mila manao asa fanaraha-maso toy ny fandoroana hetsika, fanavaozana ny serivisy, fandefasana fampandrenesana fanosehana, sns. TSY azo averina ireo asa ireo - tsy afaka manafoana hetsika, fangatahana, na fampahafantarana izahay. Raha misy hadisoana dia averina averina ny fiovan'ny angon-drakitra, saingy efa nandefa ny fampandrenesana fanosehana izahay manao hoe: "Voaforona ny tatitrao; kitiho eto raha hijery azy." Inona no mitranga rehefa mihetsika amin'ity vaovao diso ity ny mpampiasa na serivisy hafa? Hisy cascade ny tsy fahombiazana. Noho izany, ny kaody rehetra izay tsy azo avadika dia tsy tokony ho ao anatin'ny fifampiraharahana, na atahorana ny handao ny rafitray amin'ny toe-javatra ratsy rehefa misy lesoka amin'ny fifampiraharahana.

In

  • Hetsika azo averina amin'ny DB - Raha tsy azo averina ny hetsika DB ary tsy mahomby ny fifampiraharahana, ny DB dia ho tavela amin'ny toe-javatra ratsy satria ny fifampiraharahana dia hanandrana hamerina ny fanovana ho azy, saingy tsy azo ovaina izy ireo, ka tsy hahomby.
  • Fampandehanana mifandraika amin'ny DB izay takiana - Tsy afaka mamorona firaketana kaonty amin'ny banky vaovao isika raha tsy misy firaketana mpampiasa, noho izany dia mila mamorona azy roa amin'ny fifampiraharahana mitovy.
  • Lojika raharaham-barotra azo averina sy mifandraika - Fikajiana ny totalin'ny fifandanjana ananan'ny mpanjifa aorian'ny famoronana firaketana kaonty vaovao miaraka amin'ny petra-bola (na izany aza dia azo esorina amin'ny fifampiraharahana miaraka amin'ny maodely sy fandrindrana mahay).

Risky

Ireo dia zavatra izay, miankina amin'ny habetsaky ny angona voahodina sy ny fifamoivoizana DB, dia mety hiteraka fahatapahan-jiro noho ny fitazonana hidin-trano lava loatra. Ireo rehetra ireo dia tsara raha tsy maharitra ela.


  • Fanontaniana miadana - Mazàna haingana ny fakana angona, afa-tsy amin'ireo tranga telo ireo. Ireo fanontaniana ireo dia hampiadana ny fifampiraharahana ary hanitarana ny fotoana ihazonana hidy, izay hisy fiantraikany ratsy amin'ny mpampiasa hafa.

    • OHATRA
      • Fanontaniana momba ny tsanganana tsy voatanisa
      • Fanontaniana amin'ny latabatra lehibe
      • mpikamban'ny
     @transaction.atomic def process_large_order_report(start_date, end_date, min_order_value=1000): # Complex query with multiple joins and aggregations large_orders = Order.objects.filter( created_at__range=(start_date, end_date), total_amount__gte=min_order_value, status='completed' ).select_related( 'customer', 'shipping_address', 'billing_address' ).prefetch_related( 'items__product__category', 'items__product__supplier' ).annotate( item_count=Count('items'), total_weight=Sum('items__product__weight'), discount_percentage=F('discount_amount') * 100 / F('total_amount') ).filter( # Additional complex filtering Q(customer__user__is_active=True) & (Q(items__product__category__name='Electronics') | Q(items__product__category__name='Furniture')) & ~Q(shipping_address__country='US') ).order_by('-total_amount') # do the transactional work with the large_orders queryset
    • Anarana iombonana amin'ny
      • Ataovy aloha sy ivelan'ny fifanakalozana ireo fanontaniana ireo.
 # fixed def process_large_order_report(start_date, end_date, min_order_value=1000): # Complex query with multiple joins and aggregations large_orders = Order.objects.filter( created_at__range=(start_date, end_date), total_amount__gte=min_order_value, status='completed' ).select_related( 'customer', 'shipping_address', 'billing_address' ).prefetch_related( 'items__product__category', 'items__product__supplier' ).annotate( item_count=Count('items'), total_weight=Sum('items__product__weight'), discount_percentage=F('discount_amount') * 100 / F('total_amount') ).filter( # Additional complex filtering Q(customer__user__is_active=True) & (Q(items__product__category__name='Electronics') | Q(items__product__category__name='Furniture')) & ~Q(shipping_address__country='US') ).order_by('-total_amount') # Start the transaction block with transaction.atomic(): # do the transactional work with the large_orders queryset


  • Fampandehanana amin'ny latabatra maromaro - ny fifampiraharahana amin'ny asa amin'ny latabatra maromaro dia afaka manidy ny latabatra tsirairay mandra-pahavitany. Manjaka indrindra amin'ny fifindra-monina Django izany — antony iray hafa hitazonana ny fifindra-monina ho kely sy hifantoka amin'ny latabatra iray na vitsivitsy isaky ny mandeha.


    • OHATRA
      • Jereo ny fanovana ny rafitra latabatra na tsanganana
     class Migration(migrations.Migration): dependencies = [("migrations", "0001_initial")] # too many operations operations = [ migrations.RemoveField("Author", "age"), migrations.AddField("Author", "rating", models.IntegerField(default=0)), migrations.AlterField("Book", "price", models.DecimalField(max_digits=5, decimal_places=2)), ]
    • Anarana iombonana amin'ny
      • Zarao amin'ny fifampiraharahana kely kokoa ny fifampiraharahana ary fehezo amin'ny antso an-tariby oncommit.
 # fixed # 1st migration class Migration(migrations.Migration): dependencies = [("migrations", "0001_initial")] operations = [ migrations.RemoveField("Author", "age"), ] # 2nd migration class Migration(migrations.Migration): dependencies = [("migrations", "0002_initial")] operations = [ migrations.AddField("Author", "rating", models.IntegerField(default=0)), ] # 3rd migration class Migration(migrations.Migration): dependencies = [("migrations", "0003_initial")] operations = [ migrations.AlterField("Book", "price", models.DecimalField(max_digits=5, decimal_places=2)), ]


  • Fifindran'ny angona - Satria ny fifampiraharahana dia mitazona hidin-trano manomboka amin'ny fanatanterahana ny fangatahana mandra-pahatapitry ny fifampiraharahana, ny fifindra-monina izay miasa amin'ny andalana tsirairay ao amin'ny latabatra dia hiafara amin'ny fanakatonana ny latabatra iray manontolo, na amin'ny alàlan'ny fisorohana ny famakiana na fanoratana isaky ny laharana.

     def migrate_user_profiles(): # Get all users with legacy profiles users_with_profiles = User.objects.filter( legacy_profile__isnull=False ).select_related('legacy_profile') # Process all users in a single transaction with transaction.atomic(): # Track progress total = users_with_profiles.count() print(f"Migrating {total} user profiles...") # Process each user for i, user in enumerate(users_with_profiles): if i % 100 == 0: print(f"Processed {i}/{total} profiles") legacy = user.legacy_profile legacy.update_new_user_profile()
    • Anarana iombonana amin'ny
      • Afangaro amin'ny hetsika tsirairay ny fifampiraharahana, fa tsy ny fifindra-monina manontolo. Amin'ny fametrahana ny fanavaozam-baovao amin'ny andalana tsirairay amin'ny fifampiraharahana dia mitazona ny hidin-trano mandritra ny fotoana fohy ihany izahay.
 # fixed def migrate_user_profiles(): # Get all users with legacy profiles users_with_profiles = User.objects.filter( legacy_profile__isnull=False ).select_related('legacy_profile') # Process all users in a single transaction # Track progress total = users_with_profiles.count() print(f"Migrating {total} user profiles...") # Process each user for i, user in enumerate(users_with_profiles): if i % 100 == 0: print(f"Processed {i}/{total} profiles") with transaction.atomic(): legacy = user.legacy_profile legacy.update_new_user_profile()


  • (Ho an'ny PSQL sy SQLite ihany *) Fanovana tabilao na tsanganana — mitaky ny endrika hidin-trano henjana indrindra ireo asa ireo ary noho izany dia hanakana ny famakiana/soratra eo amin'ny latabatra manontolo. Ireo hetsika ireo no tena mety hiteraka fahatapahana.
    • OHATRA
      • Alter Column
      • Alter Table
    • Anarana iombonana amin'ny
      • Ampandehano izy ireo any aoriana. Ilaina ireo fanontaniana ireo, FA tsy mila manao izany isika mandritra ny ora fiasana. Ny politika tsara indrindra eto dia ny fampihenana ny mety hisian'ny fahatapahan-jiro amin'ny alalan'ny famaritana ny maha-zava-dehibe ny latabatra, ny fanombantombanana ny halavan'ny fifindra-monina, ny fanatanterahana ny fifindra-monina rehefa manana fifamoivoizana kely indrindra ny DB, ary ny fanomanana drafitra famerenana.

      • Ahena ny fotoana ilana ny fifampiraharahana. Izany dia azo atao amin'ny fisarahana ny latabatra sy ny fampandehanana ny fifindra-monina amin'ny fizarana tsirairay. PSQL Partitions & Django


* Django ihany no mamehy ny fifampiraharahana manodidina ny fifindra-monina ho an'ny PSQL sy SQLite.

 class Migration(migrations.Migration): dependencies = [("migrations", "0001_initial")] # this migration, if on a large table, can slow down and block other operations # do it later operations = [ migrations.RemoveField("Users", "middle_name"), ]


avy

  • Hetsika tsy azo ivalozana - Ny zavatra rehetra ao amin'ny fifampiraharahana dia tokony ho azo averina raha toa ka averina ny fifampiraharahana; raha mametraka antso API amin'ny fifampiraharahana isika dia tsy azo averina.

    • OHATRA
      • Fanampiana hetsika iray amin'ny filaharana — manetsika hetsika hafa
      • Mandefa Antso API - fanavaozana ny sata, asa mandrisika, sns.
     def transaction(user_data, user_files): with transaction.atomic(): user = User.objects.create(**user_data) async_notification_service.send_email(user.email, "You can login now!") Account.objects.create(user=user, balance=0) # rest of user creation proccess
    • safidy
      • Manaova lojika fandraharahana manakiana izay tokony hitranga amin'ny antso an-tariby oncommit amin'ny fifampiraharahana - Ny antso an-tariby oncommit dia antsoina FOANA rehefa nahomby ny fifampiraharahana, ary ny fanavaozana rehetra avy amin'ny fifampiraharahana dia hita ao amin'ny callback oncommit.
      • Azontsika atao ihany koa ny mamerina ny hetsika, izany hoe mamorona fomba hamafa hetsika na handefasana antso API - Asa tsy misy dikany ho an'ny ekipa tompon'ny filaharana hetsika na ny API izany. Tsy manoro izany aho.
 def transaction(user_data, user_files): with transaction.atomic(): user = User.objects.create(**user_data) Account.objects.create(user=user, balance=0) # rest of user creation proccess # the transaction is still in progress, so it can still be rolled back, it is not # committed until the transaction block is exited, so putting the notification here # is not a good idea - especially if the job starts immediately tries to read the data # this creates a race condition async_notification_service.send_email(user.email, "You can login now!") def transaction(user_data, user_files): with transaction.atomic(): user = User.objects.create(**user_data) Account.objects.create(user=user, balance=0) # rest of user creation proccess transaction.on_commit(partial(async_notification_service.send_email, user.email, "You can login now!"))


  • Ny fanakanana ny antso - satria ny fifampiraharahana dia manakana ny fanontaniana hafa rehetra tsy hiasa amin'ny latabatra/laharan'ny fiovan'ny fifampiraharahana, izay kaody izay mampitombo ny faharetan'ny fifampiraharahana dia hahatonga ny DB hihidy, ka miteraka fe-potoana sy tsy fandraisana andraikitra amin'ny fampiharana miankina amin'ny DB.


    • OHATRA
      • Antso amin'ny tambajotra - Mandefa fangatahana amin'ny API hahazoana angon-drakitra hapetraka amin'ny fifanakalozana.
      • Miankina amin'ny logger ampiasainay, ny trano famakiam-boky dia mety mandefa ny logs rehefa ao anatin'ny fifampiraharahana isika, na raha mampiasa datadog isika, dia hisy dingana hafa hamonjena ny logs, saingy mbola mandoa ny vidin'ny fitahirizana ny logs ao anaty fitadidiana isika mandra-pamonjy azy ireo amin'ny rakitra iray.
      • Hetsika kapila - Mampiditra CSV hampidirina ao anaty latabatra na manondrana latabatra mankany amin'ny CSV.
      • Asa mavesatra CPU - Ny fampitomboana matrix na ny fiovan'ny matematika / data mavesatra dia hanakana ny CPU sy ny asa hafa rehetra - Ny Global Interpreter Lock an'ny Python dia manery ny kofehy rehetra hampiasa ny CPU tsirairay, ary ny Django dia vita amin'ny fomba tokana (ny hetsika rehetra amin'ny fifampiraharahana dia mitranga).
     def transaction(user_data, user_files): with transaction.atomic(): user = User.objects.create(**user_data) for file_data in user_files: # transaction waits for this upload and so do all other connections that need access to table/rows the transaction # uses url = Cloudinary.upload_file(file_data['data']) Files.objects.create(**file_data['meta_data'], user=user, url=url) Account.objects.create(user=user, balance=0) # rest of user creation proccess
    • safidy
      • Amboary ny angon-drakitra alohan'ny fifampiraharahana - Ampidiro mialoha ny angona kapila/tambajotra. Rehefa vonona ny angona dia tanteraho ny fifampiraharahana aminy.
      • Mampiasà angon-drakitra momba ny toerana misy ny toerana — Mamorona andiana angon-drakitra hita mibaribary (tsy azo atao ny diso amin'ny angona famokarana) izay mora azo sy azo fantarina. Ampidiro alohan'ny fifampiraharahana ary ampiasao.
      • Mamorona angon-drakitra - Raha misy teritery tsy manam-paharoa amin'ny sehatra izay manakana ny fampiasana ny angon-drakitra.
      • Mampidi-doza izany - Hiteraka tsy fahombiazana tsy ampoizina noho ny toetran'ny algorithm pseudo-random - koa ampiasao algorithm kisendrasendra tsara miaraka amin'ny voa tsara mba hisorohana ny tsy fahombiazana tampoka.
      • Esory na ovao ny teritery - Raha tsy mamela antsika hamorona ny firaketanay ny teritery, dia misy olana amin'ny tetikay. Ataovy miankina amin'ny tsanganana fanjakana ny teritery izay mamaritra hoe rahoviana ny firaketana dia feno ary tokony hojerena.
 # not bad def transaction(user_data, user_files): user = None with transaction.atomic(): user = User.objects.create(**user_data) Account.objects.create(user=user, balance=0) # rest of user creation proccess for file_data in user_files: url = Cloudinary.upload_file(file_data['data']) Files.objects.create(**file_data['meta_data'], user=user, url=url) # best fix from functools import partial def transaction(user_data, user_files): user = None with transaction.atomic(): user = User.objects.create(**user_data) Account.objects.create(user=user, balance=0) # rest of user creation proccess # partials create a callable with the function and arguments # so that the function is called with the arguments when the transaction is committed # TODO: diff between partial and lambda here??? transaction.on_commit(partial(create_user_files, user_files, user)) def create_user_files(user_files, user): for file_data in user_files: url = Cloudinary.upload_file(file_data['data']) Files.objects.create(**file_data['meta_data'], user=user, url=url)


Manaraka - Ahoana ny fomba fanakanana ny baikon'ny PSQL

Amin'ny lahatsoratra manaraka, hiditra ao amin'ny PSQL isika ary hahita:

  • Ahoana ny baiko samihafa manidy latabatra sy andalana
  • Izay baiko no mampidi-doza indrindra hotanterahina

loharanom-baovao

  • atomika
  • Django Fifindra-monina & Transactions
    • Amin'ny angon-drakitra manohana ny fifampiraharahana DDL (SQLite sy PostgreSQL), ny hetsika fifindra-monina rehetra dia handeha amin'ny fifanakalozana tokana amin'ny alàlan'ny default. Mifanohitra amin'izany kosa, raha tsy mahazaka fifampiraharahana DDL ny angona iray (ohatra MySQL, Oracle) dia handeha tsy misy fifampiraharahana ny asa rehetra.
    • Azonao atao ny manakana ny fifindra-monina tsy handeha amin'ny fifanakalozana amin'ny alàlan'ny fametrahana ny toetra atomika ho Diso. Ohatra:
    • Azo atao ihany koa ny manatanteraka ampahany amin'ny fifindra-monina ao anatin'ny fifampiraharahana amin'ny fampiasana atomic() na amin'ny alalan'ny fandefasana atomic=True to RunPython
  • PSQL Partitions & Django
    • Ny ORM an'i Django dia tsy manana fanohanana naorina ho an'ny latabatra fisarahana, ka raha te hampiasa fizarazarana amin'ny fampiharanao ianao dia mila asa fanampiny.
    • Ny fomba iray hampiasana fizarazarana dia ny manodina ny fifindra-moninao manokana izay mihazakazaka SQL raw. Hahomby izany, saingy midika izany fa tsy maintsy mitantana ny fifindra-monina ianao amin'ny fanovana rehetra ataonao amin'ny latabatra amin'ny ho avy.
    • Safidy iray hafa dia ny fampiasana fonosana antsoina hoe django-postgres-extra. Django-postgres-extra dia manolotra fanohanana ireo endri-javatra PostgreSQL maromaro izay tsy natsangana tao amin'ny ORM an'i Django, ohatra, fanohanana ny TRUNCATE TABLE sy ny fisarahana latabatra.
  • PSQL Transactions
  • Python: Ahoana ny fiasan'ny Django Transactions


L O A D I N G
. . . comments & more!

About Author

Michael T. Andemeskel HackerNoon profile picture
Michael T. Andemeskel@mta
I write code and, occasionally, bad poetry. Thankfully, my code isn’t as bad as my poetry.

HANG TAGS

ITY ARTICLE ITY NO NARESAKA TAMIN'NY...