Bagaimana cara python menyimpan data di database mysql?

Dalam panduan ini, saya akan menunjukkan cara menggunakan Supermetrics API dengan Python untuk meminta data dari platform pemasaran dan periklanan digital (seperti Facebook, LinkedIn, Twitter, dan banyak lagi) dalam format JSON, cara mengonversi data tersebut menjadi DataFrame

Tetapi sebelum kita sampai ke bagian yang menyenangkan (alias cara-caranya), mari kita segera membicarakan kapan pendekatan ini berguna

Mengapa Anda harus memindahkan data pemasaran ke database daripada langsung ke alat BI seperti Tableau atau Power BI?

Meskipun Anda dapat menggunakan Supermetrics API untuk mengekstrak data pemasaran dan memuatnya langsung ke alat BI pilihan Anda, pendekatan tersebut menimbulkan beberapa tantangan

  • Alat BI tidak dimaksudkan untuk penyimpanan data jangka panjang, yang berarti bahwa setiap penyegaran menghasilkan peningkatan suboptimal (Tableau) atau menimpa kumpulan data yang sebelumnya diminta (Power BI)
  • Menggabungkan data dari "konektor web" dengan sumber data lain dalam laporan yang sama adalah sangat padat karya (Power BI) atau hampir tidak mungkin (Tableau)

Untuk menghindari masalah penyimpanan, tentu saja Anda dapat meminta rentang tanggal yang cukup panjang langsung dari API, mis. g. tiga tahun terakhir. Namun masalahnya, ini mungkin membuat laporan Anda lambat untuk disegarkan. Selain itu, Anda bahkan mungkin mengalami keterbatasan API atau sumber data. Lagi pula, bukankah akan terasa agak tidak efisien untuk mengambil data tiga tahun terakhir setiap hari untuk sejumlah platform iklan?

Alih-alih, cara yang lebih efisien adalah dengan hanya meminta data selama beberapa hari setiap hari dan memasukkan data ke dalam satu lokasi di mana Anda dapat dengan mudah mengambilnya dan menggunakannya dengan berbagai cara. Lagi pula, Anda tidak ingin alat BI Anda mendikte apa yang bisa dan tidak bisa Anda lakukan dengan data Anda

Dan di sinilah Supermetrics API, Python, dan database MySQL berguna. Inilah cara Anda bisa mendapatkan keuntungan dari kombo yang kuat ini

  1. Supermetrics API memungkinkan Anda untuk meminta data dari berbagai sumber dengan antarmuka pengguna yang intuitif. Dengan kata lain, Anda tidak perlu berurusan langsung dengan API unik setiap platform iklan
  2. Python, di sisi lain, memungkinkan Anda untuk menanyakan data, mengubahnya dengan cara apa pun yang Anda inginkan, dan menyimpan keluaran yang diinginkan di tujuan pilihan Anda, mis. g. database MySQL, BigQuery, Amazon S3, dll
  3. Anda juga dapat dengan mudah mengotomatiskan dan menjadwalkan skrip Python Anda. Segera setelah penyiapan awal selesai, Anda tidak perlu menjalankan skrip secara manual setiap kali ingin menyegarkan data
  4. Terakhir, Anda dapat menyimpan data Anda secara permanen di database MySQL Anda dan kemudian menggunakannya untuk pelaporan dan BI, dan bahkan menggabungkan data iklan Anda dengan data dari sumber lain yang mungkin Anda miliki di database yang sama

Dan pst. Jika Anda belum memiliki akses ke Supermetrics API, Anda dapat memulai uji coba gratis 14 hari hari ini untuk mencobanya. Tidak diperlukan kartu kredit

Cara menulis skrip Python untuk memindahkan data pemasaran Anda ke database MySQL

Mari beralih ke hal-hal yang baik

Sekarang, anggaplah Anda menggunakan Supermetrics API untuk mengekstrak data pemasaran yang ingin Anda tiru di database MySQL Anda. (Untuk petunjuk tentang cara melakukannya, lihat panduan memulai Supermetrics API. )

Langkah 1. Impor paket

Pertama, Anda ingin mengimpor paket yang Anda perlukan untuk menjalankan skrip

# IMPORT PACKAGES
import requests
import urllib.parse as up
import json
from pandas.io.json import json_normalize
import pandas as pd
import numpy as np

Beberapa paket, e. g. “urllib. parse”, bersifat opsional, tetapi dimaksudkan untuk memberikan bantuan agar URL untuk panggilan Supermetrics API lebih mudah dibaca

Langkah 2. Muat kunci API ke dalam skrip Anda

Jika Anda menggunakan git atau kontrol versi serupa, Anda mungkin ingin mengambil kunci API yang ada di dalam URL panggilan API dan menyimpannya dalam file teks terpisah.  

Kemudian, Anda harus menjalankan perintah berikut untuk memuat kunci API ke dalam skrip Anda

# READ API KEY (COPIED FROM API URL): STORE TXT WITH API KEY FROM THE URL GENERATED IN THE QUERY MANAGER
# IN SAME PATH AS THIS SCRIPT. OTHERWISE YOU NEED TO ADD THE PATH TO THE BELOW TXT FILE
# (NOTE: ADD QUOTATION MARKS " AT START AND END OF API KEY IN THE TXT)
f = open("YOUR_SM_API_KEY.txt", "r")
api_key = f.read()
_

Langkah 3. Ambil kunci API

Jika Anda bertanya-tanya bagaimana cara mengambil kunci API dari URL, berikut adalah contoh URL untuk menampilkan kunci API (dalam hal ini. “api_XXXX”) yang perlu Anda ambil

https://api.supermetrics.com/enterprise/v2/query/data/json?json=%7B%22ds_id%22%3A%22GA%22%2C%22ds_accounts%22%3A%5B%2220619257%22%5D%2C%22date_range_type%22%3A%22yesterday%22%2C%22fields%22%3A%5B%7B%22id%22%3A%22Date%22%7D%2C%7B%22id%22%3A%22Sessions%22%7D%5D%2C%22max_rows%22%3A1000%2C%22api_key%22%3A%22api_XXXX%22%7D

Satu tip pada tahap ini. Jika Anda menemukan URL di atas sulit dibaca, Anda dapat mendekode URL di dalam Python menggunakan "urllib. parse” (lihat cuplikan kode di bawah). Ini akan menghasilkan URL berikut yang menurut saya pribadi lebih mudah dibaca dan digunakan

https://api.supermetrics.com/enterprise/v2/query/data/json?json={"ds_id":"GA","ds_accounts":["20619257"],"date_range_type":"yesterday","fields":[{"id":"Date"},{"id":"Sessions"}],"max_rows":1000,"api_key":"api_XXXX"}

Berikut kode Python untuk menghasilkan URL yang dapat dibaca

# SUPERMETRICS API URL EXAMPLE (WITH API KEY REMOVED)
url = "https://api.supermetrics.com/enterprise/v2/query/data/json?json=%7B%22ds_id%22%3A%22GA%22%2C%22ds_accounts%22%3A%5B%2220619257%22%5D%2C%22date_range_type%22%3A%22yesterday%22%2C%22fields%22%3A%5B%7B%22id%22%3A%22Date%22%7D%2C%7B%22id%22%3A%22Sessions%22%7D%5D%2C%22max_rows%22%3A1000%2C%22api_key%22%3A%22api_XXXX%22%7D"
 
# DECODE URL: HELPFUL TO IMPROVE READABILITY OF QUERY PARAMETERS => ALLOWS FOR EASIER EDITING
# Decode the URL generated by the SM QUERY MANAGER: https://team.supermetrics.com/query-manager
print(up.unquote(url))
# PRINT ORIGINAL URL FOR COMPARISON
print(url)
_

Inilah output dari perintah "print(up. unquote(url))” untuk menghasilkan URL yang dapat dibaca

Bagaimana cara python menyimpan data di database mysql?

Pada tahap ini, Anda dapat memutuskan apakah ingin bekerja dengan URL asli yang dihasilkan oleh Supermetrics API atau versi yang didekodekan.  

Untuk sisa panduan ini, saya akan menggunakan URL yang didekodekan dengan Python karena memungkinkan saya untuk memodifikasi kueri secara langsung di skrip Python dengan lebih mudah. Tetapi langkah-langkah berikut akan bekerja sama dengan URL asli

Pertama, URL yang didekodekan dapat dibagi menjadi beberapa bagian di beberapa baris untuk meningkatkan kemampuan pengeditan

# SPLIT UP DECODED URL AND MODIFY PARAMETERS, E.G. "date_range_type"
url_decoded = ('https://api.supermetrics.com/enterprise/v2/query/data/'
# CHOOSE OUTPUT FORMAT: JSON, KEYJSON, CSV, TSV, ETC: https://supermetrics.com/docs/product-api-output-formats/
# EXAMPLE: 'keyjson?json='
+'[INSERT_OUTPUT_FORMAT]?json='
# CHOOSE DATA SOURCE, e.g. "GA" or "FB" or "IG"
+'{"ds_id":"[INSERT_DATA_SOURCE]"'
# CHOOSE ACCOUNTS AND PARSE AS LIST, e.g. GA views: ["1234","5678"]
+',"ds_accounts":["INSERT_YOUR_ACCOUNTS"],'
# DEFINE DATE RANGE
# +'"start_date":"2020-06-01","end_date":"2020-06-30",'
+'"date_range_type":"last_week_mon_sun",'
# CHOOSE YOUR FIELDS, i.e. DIMENSIONS AND METRICS. SEE EXAMPLE FOR Google Analytics BELOW
+'"fields":[{"id":"Date"},{"id":"Sessions"},{"id":"Pageviews"},{"id":"Users"}],'
+'"max_rows":1000000,'
+'"api_key":'+api_key+'}')

Langkah 4. Isi parameternya

Anda harus mengisi parameter berikut

  • [INSERT_OUTPUT_FORMAT]. Nilai dapat berupa "JSON", "KEYJSON", "CSV", dll. Anda dapat menemukan semua format keluaran di sini
  • [INSERT_DATA_SOURCE]. Jika Anda ingin meminta data dari Google Analytics, nilainya adalah “GA. ” Jika Anda ingin meminta data dari Iklan Facebook, nilainya adalah “FA. ” Anda dapat menemukan semua ID sumber data di sini
  • [“INSERT_YOUR_ACCOUNTS”]. Anda dapat menentukan daftar akun tempat Anda ingin mengambil data, mis. g. {“ds_accounts”. [“567890”, “1358618”]}. Anda dapat menemukan informasi lebih lanjut di sini
  • Tentukan rentang tanggal. Gunakan parameter "start_date" dan "end_date" atau "date_range_type. ” Di sini Anda dapat menemukan info lebih lanjut tentang tanggal dan rentang tanggal, mis. g. Anda dapat menggunakan nilai relatif, mis. g. "mulai tanggal". ”01-01-2019″, “tanggal_akhir”. "kemarin". Anda dapat menggunakan alat ini untuk menguji ekspresi tanggal relatif
  • Pilih bidang Anda. Dalam cuplikan di atas, kolom “Tanggal”, “Sesi”, “Tampilan Halaman”, dan “Pengguna” dipilih sebagai contoh (untuk kueri data dari Google Analytics). Anda dapat menemukan bidang yang tersedia per sumber data di sini
  • Tentukan jumlah maksimum baris. Anda dapat menggunakan nilai hingga 1 juta baris seperti pada cuplikan di atas
  • "kunci API". Ini menunjuk ke variabel di atas, yang dibuat dengan membaca kunci API dari file teks terpisah di jalur yang sama dengan skrip Python. Jika Anda memilih untuk tidak memisahkan kunci API dari skrip, Anda dapat menggunakan kunci API yang ada di URL (lihat bagian URL di atas yang bertuliskan api_XXXX)

Harap perhatikan bahwa Anda tidak perlu membagi URL seperti yang ditunjukkan di atas, Anda juga dapat menyalin/menempel URL untuk panggilan API yang dihasilkan di Supermetrics API, baik URL "normal" atau "URL Pendek", ke dalam variabel . Sisa skrip seharusnya masih berfungsi

Langkah 5. Panggil API

Sekarang kami akan memanggil API dengan perintah berikut dan mencetak responsnya

# CALL SUPERMETRICS API
response = requests.get(url_decoded)
 
print(response)
_

Jika responsnya adalah "", itu berarti panggilan API berhasil dan data Anda dimuat

Jika Anda memilih format output "JSON" atau "KEYJSON", Anda sekarang dapat mengonversi data JSON dalam variabel "response" menjadi DataFrame, dengan cuplikan berikut

# IF STATEMENT TO CHECK FORMAT
if 'data/json?' in url_decoded:
   # CONVERT JSON INTO PANDAS DATAFRAME
   data = json.loads(json.dumps(response.json()))
   df = pd.DataFrame.from_dict(data['data'])
   headers = df.iloc[0]
   df2 = pd.DataFrame(df.values[1:], columns=headers)
   df2.head()
   print(df2.head())
elif 'data/keyjson?' in url_decoded:
   # CONVERT JSON KEY-VALUE PAIR OUTPUT TO PD DF
   df2 = pd.read_json(json.dumps(response.json()))
   df2.head()
   print(df2.head())
else:
   # THROW EXCEPTION MESSAGE
   import sys
   sys.exit("DEFINE JSON OR KEYJSON AS OUTPUT FORMAT: https://supermetrics.com/docs/product-api-output-formats/")

Pada dasarnya, yang dilakukan cuplikan ini adalah memeriksa format mana yang dipilih dalam variabel "url_decoded" dan membentuk DataFrame yang sesuai, karena kami menawarkan dua format output JSON yang berbeda, yang perlu ditangani secara berbeda untuk membuat DataFrame.  

Harap perhatikan bahwa jika Anda memilih format keluaran selain "JSON" atau "KEYJSON", skrip akan menampilkan kesalahan dengan pesan "DEFINE JSON OR KEYJSON AS OUTPUT FORMAT"

Langkah 6. Memuat data ke MySQL

Setelah DataFrame dibuat, cukup muat data ke dalam tabel database MySQL

# IF YOU PLAN ON LOADING THE DATAFRAME INTO A DATA WAREHOUSE,
# YOU WILL NEED TO ADD THE REQUIRED CREDENTIALS TO WRITE THE DATA INTO YOUR DWH
 
# MySQL EXAMPLE CODE CAN BE FOUND BELOW
# LOAD DATA TO MYSQL DB
from sqlalchemy import create_engine
import pymysql
 
# CONNECTION OPTION 1: READ CONNECTION DETAILS FROM TXT FILE (STORED IN SAME PATH AS THIS SCRIPT)
# YOU NEED TO CREATE THE TXT FILE YOURSELF. IT NEEDS TO CONTAIN THE CREDENTIALS THAT ARE INSERTED IN OPTION 2 BELOW
f = open("[INSERT_FILE_NAME].txt", "r")
sql_conn = f.read()
conn = create_engine(sql_conn)
 
# CONNECTION OPTION 2: INSIDE THE CODE
conn = create_engine("mysql+pymysql://[INSERT_USER]:[INSERT_PASSWORD]@[INSERT_HOST]/[INSERT_DATABASE_NAME]")
#Example: conn = create_engine("mysql+pymysql://root:PassWord123!@localhost/my_database")
_

Seperti yang Anda lihat, dua opsi koneksi dijelaskan dalam cuplikan di atas

  • Opsi 1 mengikuti logika yang sama seperti sebelumnya mengenai kunci API. Jadi, jika Anda menggunakan kontrol versi, jangan memaparkan informasi sensitif apa pun seperti nama, kata sandi, dll. , di dalam kode Python
  • Opsi 2 hanya menunjukkan kepada Anda bagaimana Anda dapat langsung mengurai kredensial MySQL Anda di dalam kode

Setelah Anda membuat koneksi ke MySQL, yang harus dilakukan hanyalah memuat data dari DataFrame ke dalam tabel MySQL DB.  

Pada tahap ini Anda perlu menentukan [TABLE_NAME]

# WRITE DATAFRAME INTO DB TABLE
df2.to_sql(name='[TABLE_NAME]', con=conn, if_exists = 'replace', index=False)
_

Setelah itu, yang tersisa untuk Anda lakukan adalah menjalankan kueri SQL untuk memeriksa ulang apakah data benar-benar dimuat ke MySQL dan mencetak hasilnya. Untuk melakukannya, cukup ganti [INSERT_DATABASE_NAME] dan [TABLE_NAME] sesuai dengan itu

# READ API KEY (COPIED FROM API URL): STORE TXT WITH API KEY FROM THE URL GENERATED IN THE QUERY MANAGER
# IN SAME PATH AS THIS SCRIPT. OTHERWISE YOU NEED TO ADD THE PATH TO THE BELOW TXT FILE
# (NOTE: ADD QUOTATION MARKS " AT START AND END OF API KEY IN THE TXT)
f = open("YOUR_SM_API_KEY.txt", "r")
api_key = f.read()
_0

Inilah seluruh skrip untuk Anda salin dan gunakan

# READ API KEY (COPIED FROM API URL): STORE TXT WITH API KEY FROM THE URL GENERATED IN THE QUERY MANAGER
# IN SAME PATH AS THIS SCRIPT. OTHERWISE YOU NEED TO ADD THE PATH TO THE BELOW TXT FILE
# (NOTE: ADD QUOTATION MARKS " AT START AND END OF API KEY IN THE TXT)
f = open("YOUR_SM_API_KEY.txt", "r")
api_key = f.read()
_1

Ke Anda

Seperti yang Anda lihat, menggunakan API Supermertics dengan Python cukup mudah. Dengan skrip yang baru saja kita telusuri, Anda dapat membuat beberapa kueri untuk sumber data Anda, dan menyimpan data di MySQL — atau database lainnya

Dengan cara ini, Anda dapat membuat kueri API tetap kecil dan cepat, sekaligus dapat membangun database, dan menggunakan API untuk pelaporan ad hoc apa pun yang mungkin perlu Anda lakukan.  

Dengan menyimpan data di database MySQL atau gudang data atau data lake apa pun, Anda dapat memenuhi berbagai kebutuhan di organisasi Anda, seperti

  • Menghubungkan data yang disimpan ke alat BI untuk laporan kinerja tinggi
  • Menghubungkan data yang disimpan ke alat ETL seperti Talend untuk melakukan transformasi e. g. menggabungkan situs web, CRM, dan data keuangan
  • Mengaktifkan analitik lanjutan, mis. g. menerapkan model pembelajaran mesin pada data iklan Anda untuk memprediksi keefektifan kampanye iklan Anda, atau membangun model bauran pemasaran di atas data historis dari platform iklan Anda

Anda juga dapat mengotomatiskan seluruh proses yang baru saja kita lalui dan menjalankan skrip sesuai jadwal. Misalnya, Anda dapat menggunakan tugas CRON secara lokal di MacOS atau Windows, atau menjadwalkan tugas di platform layanan cloud seperti GCP, AWS, atau Azure jika Anda berencana memuat data ke gudang data cloud atau data lake

Selain itu, Anda dapat memodifikasi skrip untuk pemuatan data yang lebih lanjut, misalnya, dengan menimpa data di database Anda selama X hari terakhir saat Anda mengambil data terbaru di API. Ini mungkin berguna jika data historis di sumber data Anda cenderung berubah, seperti data biaya atau konversi di Iklan Facebook

Jika ini sepertinya banyak yang harus ditangani dan dikelola, Anda benar. Karena.  

Penjadwalan, percobaan ulang, pemeliharaan, dan pemeliharaan menghabiskan lebih banyak waktu daripada yang Anda kira. Jika Anda lebih suka Supermetrics menanganinya untuk Anda, periksa gudang data dan produk penyimpanan cloud kami, yang dilengkapi dengan penjadwalan bawaan, percobaan ulang otomatis, serta penanganan dan pemberitahuan kesalahan yang canggih

Jika Anda tertarik untuk melihat salah satu fitur tersebut beraksi, jangan ragu untuk memulai uji coba 14 hari gratis produk Supermetrics apa pun

Bagaimana Python berintegrasi dengan MySQL?

Prosedur untuk Mengikuti Python untuk Bekerja dengan MySQL .
Hubungkan ke basis data
Buat objek untuk database Anda
Jalankan kueri SQL
Ambil catatan dari hasil
Menginformasikan Database jika Anda membuat perubahan pada tabel

Bagaimana cara kerja Python dengan database?

Python menjadi bahasa tingkat tinggi memberikan dukungan untuk berbagai database. Kita dapat menghubungkan dan menjalankan kueri untuk database tertentu menggunakan Python dan tanpa menulis kueri mentah di terminal atau shell dari database tertentu itu, kita hanya perlu menginstal database itu di sistem kita

Apa yang dilakukan MySQL terhadap Python?

MySQL Connector/Python memungkinkan program Python untuk mengakses database MySQL , menggunakan API yang sesuai dengan Spesifikasi API Database Python v2. 0 (PEP 249).

Bagaimana cara kerja database SQL di Python?

Menghubungkan ke Database SQLite . Jika tidak, Python akan membuat file dengan nama yang diberikan. create a connection using connect() method and pass the name of the database you want to access if there is a file with that name, it will open that file. Otherwise, Python will create a file with the given name.