Inspirasi adalah visi yang terkandung dalam hati & pikiran. Seni adalah ungkapan hati & pikiran yang diukir dalam berbagai bentuk. Hidup adalah inspirasi & seni dengan memanfaatkan teknologi
PyCharm merupakan IDE terbaik untuk pemrograman python. PyCharm dibuat oleh JetBrains.
Ada dua versi PyCharm:
Versi Profesional (Trial 30 hari) – Memiliki fitur lebih banyak untuk pemrograman python dan web.
Versi Komunitas (Gratis dan opensource) – Fiturnya standar untuk pemrograman python.
Instalasi PyCharm di Linux
Pertama, pastikan komputermu sudah terinstal JDK (Java Development Kit) atau JRE. Karena PyCharm terbuat dari Java dan dia membutuhkan JRE untuk berjalan.
Setelah itu, ikuti langkah-langkah berikut untuk menginstalnya:
Buka File manager sebagai root.
Cari File PyCharm yang sudah didownload tadi, kemudian ekstrak ke direktori /opt.
Buka kembali File Manager sebagai user biasa. Kemudian masuk ke /opt/pycharm-community-2017.1.2/bin dan klik ganda pada file pycharm.sh, lalu pilih run.
Tunguglah sebentar, maka akan terbuka jendela baru. Pilih Don not import settings, kemudian klik OK.
Jendela sambutan akan terbuka, silahkan centang “Enable opening file…” agar perintah charm dikenali di terminal. Setelah itu klik Ok.
Masukkan Password bila diminta, setelah itu klik OK.
Coba periksa di menu, apakah sudah ada PyCharm atau tidak?
Membuat Proyek Python di PyCharm
Untuk membuat proyek baru, kita bisa klik “Create new Project” pada jendela sambutan (welcome) PyCharm.
Atau bisa juga dilakukan melalui menu File->New Project.
Setelah itu, kita akan diminta untuk mengisi nama proyeknya dan memilih versi Python yang akan digunakan.
Isi saja nama proyeknya dengan hello-world dan gunakan Python versi 2 (python2.7).
Maka kita akan langsung di bawah ke area kerja PyCharm.
Selanjutnya, silahkan tambahkan file python dengan klik kanan pada direktori proyek, kemudian pilih New->Python File.
Setelah itu, berikan nama filenya dengan program-pertama dan klik Ok.
Selanjutnya, silahkan tulis kode program-nya.
print"Hello dunia"print"Selamat datang di pemrograman Python"print"Saya belajar Python dengan PyCharm"print"Salam, Petani Kode"
Kemudian buka menu Run->Run… atau tekan tombol Alt+Shift+F10. Kalau muncul pilihan, pilih saja program-pertama.
Standar Interface Python untuk database adalah Python DB-API. Kebanyakan Interface database Python mematuhi standar ini.
Anda bisa memilih database yang tepat untuk aplikasi Anda. API Database Python mendukung berbagai macam server database seperti.
GadFly
mSQL
MySQL
PostgreSQL
Microsoft SQL Server 2000
Informix
Interbase
Oracle
Sybase
SQLite
Untuk mempelajari lebih lengkap daftar antarmuka/interface database Python - Antarmuka dan API Database Python. Anda harus mendownload modul DB API terpisah untuk setiap database yang perlu Anda akses. Sebagai contoh, jika perlu mengakses database Oracle dan juga database MySQL, Anda harus mendownload kedua modul database Oracle dan MySQL.
API DB menyediakan standar minimal untuk bekerja dengan database menggunakan struktur dan sintaks Python sedapat mungkin. API ini meliputi:
Mengimpor modul API.
Mendapatkan koneksi dengan database.
Menerbitkan pernyataan SQL dan prosedur tersimpan.
Menutup koneksi
Python memiliki dukungan built-in untuk SQLite. Pada bagian ini, akan mempelajari semua konsep menggunakan MySQL. Modul MySQLdb, antarmuka yang populer dengan MySQL tidak kompatibel dengan Python 3. Sebagai gantinya, akan menggunakan modul PyMySQL.
Apa itu PyMySQL ?
PyMySQL adalah sebuah antarmuka untuk menghubungkan ke server database MySQL dari Python. Ini mengimplementasikan API Database Python v2.0 dan berisi perpustakaan klien MySQL murni-Python. Tujuan PyMySQL adalah penggantian drop-in untuk MySQLdb.
Cara Instal PyMySQL
Sebelum melanjutka, pastikan Anda telah menginstal PyMySQL di komputer. Cukup ketik berikut ini di skrip Python dan jalankan.
import PyMySQL
Jika menghasilkan hasil berikut, berarti modul MySQLdb tidak terpasang:
Traceback (most recent call last):File "test.py", line 3, in Import PyMySQLImportError: No module named PyMySQL
Untuk menginstal modul PyMySQL silahkan gunakan command/perintah berikut di command prompt:
pip install PyMySQL
Database Connection
Sebelum terhubung ke database MySQL, pastikan beberapa hal dibawah ini :
telah membuat database TESTDB.
telah membuat tabel EMPLOYEE di TESTDB.
Tabel ini memiliki bidang FIRST_NAME, LAST_NAME, AGE, SEX, dan INCOME.
User ID “testuser” dan password “test123” diatur untuk mengakses TESTDB.
Python modul PyMySQL terinstal dengan benar pada mesin komputer.
Anda telah melalui tutorial MySQL untuk memahami Dasar-Dasar MySQL
Berikut ini adalah contoh koneksi dengan database MySQL “TESTDB”
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# execute SQL query using execute() method.cursor.execute("SELECT VERSION()")# Fetch a single row using fetchone() method.data=cursor.fetchone()print("Database version : %s "%data)# disconnect from serverdb.close()
Membuat Tabel Database
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# Drop table if it already exist using execute() method.cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# Create table as per requirementsql="""CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""cursor.execute(sql)# disconnect from serverdb.close()
Operasi Insert
Contoh berikut, mengeksekusi pernyataan SQL INSERT untuk membuat catatan di tabel EMPLOYEE
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# Prepare SQL query to INSERT a record into the database.sql="""INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""try:# Execute the SQL commandcursor.execute(sql)# Commit your changes in the databasedb.commit()except:# Rollback in case there is any errordb.rollback()# disconnect from serverdb.close()
Contoh di atas bisa dituliskan sebagai berikut untuk membuat query SQL secara dinamis
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# Prepare SQL query to INSERT a record into the database.sql="INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )"% \
('Mac','Mohan',20,'M',2000)try:# Execute the SQL commandcursor.execute(sql)# Commit your changes in the databasedb.commit()except:# Rollback in case there is any errordb.rollback()# disconnect from serverdb.close()
Read Operation
READ Operation pada database apapun berarti mengambil beberapa informasi berguna dari database.
Setelah koneksi database terbentuk, siap untuk membuat query ke dalam database ini. bisa menggunakan metode fetchone() untuk mengambil satu record atau fetchall() metode untuk mengambil beberapa nilai dari tabel database.
Fetchone () - Ini mengambil baris berikut dari kumpulan hasil query. Set hasil adalah objek yang dikembalikan saat objek kursor digunakan untuk query tabel.
Fetchall () - Ini menjemput semua baris dalam kumpulan hasil. Jika beberapa baris telah diekstraksi dari himpunan hasil, maka akan diambil baris yang tersisa dari kumpulan hasil.
Rowcount - Ini adalah atribut read-only dan mengembalikan jumlah baris yang dipengaruhi oleh metode execute ().
Prosedur berikut menanyakan semua catatan dari tabel EMPLOYEE yang memiliki gaji lebih dari 1000
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# Prepare SQL query to INSERT a record into the database.sql="SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'"%(1000)try:# Execute the SQL commandcursor.execute(sql)# Fetch all the rows in a list of lists.results=cursor.fetchall()forrowinresults:fname=row[0]lname=row[1]age=row[2]sex=row[3]income=row[4]# Now print fetched resultprint("fname = %s,lname = %s,age = %d,sex = %s,income = %d"% \
(fname,lname,age,sex,income))except:print("Error: unable to fetch data")# menutup koneksi ke serverdb.close()
Setelah Anda eksekusi kode diatas, akan muncul hasil seperti dibawah ini : fname = Mac, lname = Mohan, age = 20, sex = M, income = 2000
Update Operation
Operasi UPDATE pada database apapun berarti mengupdate satu atau lebih catatan, yang sudah tersedia di database. Prosedur berikut memperbarui semua catatan yang memiliki SEX sebagai ‘M’. Di sini, meningkatkan UMUR semua laki-laki satu tahun.
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# Prepare SQL query to UPDATE required recordssql="UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'"%('M')try:# Execute the SQL commandcursor.execute(sql)# Commit your changes in the databasedb.commit()except:# Rollback in case there is any errordb.rollback()# disconnect from serverdb.close()
Delete Operation
Operasi DELETE diperlukan bila ingin menghapus beberapa catatan dari database. Berikut ini adalah prosedur untuk menghapus semua catatan dari EMPLOYEE dimana AGE lebih dari 20
importPyMySQL# Open database connectiondb=PyMySQL.connect("localhost","testuser","test123","TESTDB")# prepare a cursor object using cursor() methodcursor=db.cursor()# Prepare SQL query to DELETE required recordssql="DELETE FROM EMPLOYEE WHERE AGE > '%d'"%(20)try:# Execute the SQL commandcursor.execute(sql)# Commit your changes in the databasedb.commit()except:# Rollback in case there is any errordb.rollback()# disconnect from serverdb.close()
Selain itu masih ada beberapa operasi sebagai berikut :
Python merupakan bahasa pemrograman yang mendukung hampir semua platform seperti desktop, web dan yang terbaru yaitu mobile android dengan kivy, selain itu kebanyakan penggunan python sebagai dasar scripting untuk berbagai aplikasi.
Tentu sebagai bahasa scripting, python juga mensupport koneksi dengan database, sebagai contoh, python secara default mendukung penggunaan SQLite, dan tentu juga mensupport database lainnya seperti postgresql, mysql, ataupun database nosql seperti mongoDB dan sebagainya.
Persiapan Environtment
Untuk menggunakan Mysql pada Python, tentunya harus menginstall mysql server. Setelah itu, dapat menyiapkan mysql driver sebagai penghubung antara python dengan mysql-server. Ada banyak jenis driver untuk mysql, sepertiMysql-Connector,PyMysql, ataupunMysqlClient.
Install MysqlClient
Sebelum memulai, untuk pengguna linux berbasis linux, windows ataupun macOS, harus menginstall python dan mysql headers development dengan cara sebagai berikut :
Tentu secara umum python dapat menggunakan berbagai macam metode untuk memanggil suatu library, dengan metode direct, fungction ataupun model Objek orientasi.
Dalam bagian ini, akan menunjukkan 2 cara, menggunakan metode langsung dan metode OOP
Membuat Database
Untuk cara pertama, menggunakan cara koneksi langsung. Sebelumnya kita harus membuat database terlebih dahulu yaaaa XD,
ketikkan script berikut
CREATE TABLE `product` ( `id` int(45) NOT NULL, `name` varchar(45) NOT NULL, `price` int(11) NOT NULL, `stock` int(11) NOT NULL, PRIMARY KEY (`id`));
lalu isikan dengan data menggunakan script berikut,
INSERT INTO `product`(`id`,`name`,`price`,`stock`)
Setelah data masuk kedalam database, langkah berikutnya akan melakukan query menggunakan python. Dalam contoh ini menggunakan metode direct connection yang artinya cara mengkoneksikannya langsung tanpa menggunakan kelas.
berikut ini contohnya :
import MySQLdb as dbconnection = db.connect('127.0.0.1', 'root', '', 'pos')cursor = connection.cursor()query = "SELECT * from product"cursor.execute(query)result = cursor.fetchall()for items in result: print(items)
pertama kali harus memanggil MysqlDB menggunakan syntax import.
kemudian mengkonekkan dengan database dan menyimpannya pada variabel connection.
Setelah itu mendefinisikan cursor pada object connection dan menyimpannya dengan nama yang sama yaitu cursor dimana cursor ini akan digunakan untuk mengesekusi query.
ketika query di eksekusi oleh kursor, maka dapat menampilnya dengan beberapa cara, fetchall yaitu mengambil semua baris pada database, kemudian ada fetchone yang mengambil data paling teratas.
dan result dari kode diatas adalah sebagai berikut
Direct Connection INSERT dan DELETE
Seperti umummnya koneksi dengan database, tentu ada yang namanya CRUD atau CREATE, READ, UPDATE Delete, maka kali ini akan mencoba untuk insert dan delete database.
pada insert database , menggunakan syntax dasar mysql yaitu insert, yang diikuti string lateral dengan metode bind paramater, yaitu membuat paramater menggunakan list, bukan mempassing string, karena hal ini akan mudah di SQL Injection.
untuk contoh delete :
import MySQLdb as dbconnection = db.connect('127.0.0.1', 'root', '', 'pos')cursor.execute("DELETE FROM `product` WHERE `product`.`id` = 12")connection.commit()
sama seperti sebelum-sebelumnya, memanfaatkan bind paramater, dengan membuat isinya menjadi bentuk list sebagai salah satu upaya menghindari sql injection,
Connection Class
Metode selanjutnya adalah menggunakan kelas untuk menginisialisasi koneksi pada database. Pada contoh ini hanya menggunakan kelas sebagai inisiator untuk menghubungkan ke database, untuk querynya tetap menggunakan metode biasa, sebagai catatan, ada 1 tools yang lebih baik dari segi efesiensi kode dan keamanan yaitu dengan menggunakan orm seperti sql-alchemy yang akan dibahas dalam tutorial Flask Versi 2.
Implementasi langsugn, pertama membuat kelas koneksi, dalam hal ini saya menamakan filenya connection.py
import MySQLdb as mysqlimport hashlibimport sysimport warningsclassMysqlUserDB:# initialization Connection Database# Init Start warnings.filterwarnings('error')def__init__(self, DBrootHost, DBrootUser, DBrootPass, DBrootDatabase): self.DBrootHost = DBrootHost self.DBrootUser = DBrootUser self.DBrootPass = DBrootPass self.DBrootDatabase = DBrootDatabasetry: print("Checking connection of MYSQL ...") self.con = mysql.connect(DBrootHost, DBrootUser, DBrootPass, DBrootDatabase) self.cursor = self.con.cursor() self.cursor.execute('Select version()') print("Connected to Mysql Database\n")# except mysql.Error as error:# print("Error %s\n Stop.\n" % error)# sys.exit()except Warning as warn: print("Warning", warn)defCreateDB(self, DBrootDatabase): print("Creating database...")try: self.cursor.execute('CREATE database if NOT exists ' + DBrootDatabase) self.cursor.execute("SHOW DATABASES LIKE %s", (DBrootDatabase,)) dbs = self.cursor.fetchone() print("Database created: ", dbs[0])except Warning as warn: print("Warning: %s \nStopping Process.\n" % warn) sys.exit()defGrantsAccess(self, DBrootDatabase): print("Accessing Account ...")try: self.cursor.execute("SHOW DATABASES LIKE %s", (DBrootDatabase,)) result = self.cursor.fetchone() print("Access Granted for Database", result[0])except Warning as warn: print("Warningg %s" % warn)defgetDB(self):return self.cursordefdelCon(self): print("Finishing operation ...") self.cursor.close() self.con.close() print("Finished")# Init End
dalam kelas fungsi diatas, menginisialisasi paramater untuk koneksi yang dinisialisasi pada method init, Sedangkan untuk me-return hasil koneksi, menggunakan method getDB hal ini untuk mereturn cursor untuk dipanggil saat melakukan eksekusi, dan untuk memutuskan koneksi menggunakan method delcon, sedangkan sisa method lainnya hanya sebagai method pendukung, sebenernya untuk lebih memudahkan lagi, bisa membuat method-method khusus crud seperti method untuk melakukan select dan sebagainya, namun karena keterbatasan waktu, maka hanya membuat dasarnya saja.
Setelah itu, membuat file baru untuk mengetes apakah koneksi berhasil dan melakukan query.
dalam hal ini menggunakan connectionTes.py
import connection as dbsimport warningswarnings.filterwarnings('error')mysqli = dbs.MysqlUserDB(DBrootHost='127.0.0.1', DBrootUser='root', DBrootPass='', DBrootDatabase='pos')db = mysqli.getDB()try: db.execute("select * from product") results = db.fetchall()for result in results: print(result)except db.Error as error: print(error)mysqli.delCon()
dalam hal ini, mengimport kelas connection sebagai db. Setelah itu di inisialisasi dengan variabel baru bernaman mysqli.
dan membuat object cursor pada db dengan memanggil object kelas mysql.getDB()
untuk querynya hampir sama dengan yang sebelumnya. perbedannya adalah mengkoneksikannya menggunakan kelas