Bisakah saya menjalankan mysql di anaconda?

Saya sudah menulis bahwa sejak beberapa bulan yang lalu saya bekerja dengan #Anaconda, versi Python ilmiah, karena versi ini menyertakan beberapa alat untuk bekerja dengan data. Namun, saya sedikit bingung karena tidak ada paket MySQL yang dapat digunakan

Bisakah saya menjalankan mysql di anaconda?
Bisakah saya menjalankan mysql di anaconda?

Anakonda dan MySQL

Jadi, jika Anda perlu terhubung dengan database MySQL, Anda perlu menginstal sebuah paket. Pada posting sebelumnya, saya sudah menjelaskan bagaimana Anda dapat menginstal MySQLdb, tetapi bahkan melakukan ini tidak berhasil

Bisakah saya menjalankan mysql di anaconda?
Bisakah saya menjalankan mysql di anaconda?

Masalah dengan MySQL

Jadi, saya membaca di posting forum ini bahwa disarankan untuk menggunakan PyMySQL sebagai koneksi MySQL, jadi saya mengunduhnya dan menginstalnya (dari kode sumber)

Bisakah saya menjalankan mysql di anaconda?
Bisakah saya menjalankan mysql di anaconda?

Menginstal PyMySQL

Mari kita coba itu berhasil

Bisakah saya menjalankan mysql di anaconda?
Bisakah saya menjalankan mysql di anaconda?

Mencoba PyMySQL dengan Anaconda

Kelas untuk bekerja dengan PyMySQL

untuk bekerja dengan PyMySQL, saya telah memodifikasi kelas yang dapat saya gunakan di beberapa proyek. Kode ini bukan main, tetapi Anda dapat memilikinya di sini, di GitHub

# coding: utf-8
__author__ = 'dtrillo'

import sys;
import pymysql; #mysql library (you will need to install this on the system)

#MySQL Singleton Class with pymysql
class MySQLConnector(object):
#    
_connection = None;
_instance = None;

def __init__(self, host="localhost", user="root", passwd="forever", database="", debug=False):    # Versión 1.0.1
try:
if MySQLConnector._instance == None:
MySQLConnector._instance = self;
self.dbhost = host
self.dbuser = user
self.dbpassword = passwd
self.dbname = database
MySQLConnector._instance.connect(debug);    # Versión 1.0.1
except Exception, e:
print "MySQL Error "+str(e);

def instance(self):
return MySQLConnector._instance;

def get_connection(self):
return MySQLConnector._connection;

def connect(self, debug=False):
try:
MySQLConnector._connection = pymysql.connect(self.dbhost, self.dbuser, self.dbpassword, self.dbname);
if debug:
print "INFO: Database connection successfully established";
except Exception, e:
print "ERROR: MySQL Connection Couldn't be created.. Fatal Error! "+str(e);
sys.exit();

def disconnect(self):
try:
MySQLConnector._connection.close();
except:
pass;#connection not open

#returns escaped data for insertion into mysql
#def esc(self, esc):
#    return MySQLdb.escape_string(str(esc));

#query with no result returned
def query(self, sql):
cur = MySQLConnector._connection.cursor();
return cur.execute(sql);

def tryquery(self, sql):
try:
cur = MySQLConnector._connection.cursor();
return cur.execute(sql);
except:
return False;

#inserts and returns the inserted row id (last row id in PHP version)
def insert(self, sql):
cur = MySQLConnector._connection.cursor();
cur.execute(sql);
return self._connection.insert_id();

def tryinsert(self, sql):
try:
cur = MySQLConnector._connection.cursor();
cur.execute(sql);
return self._connection.insert_id();
except:
return -1;

#returns the first item of data
def queryrow(self, sql):
cur = MySQLConnector._connection.cursor();
cur.execute(sql);
return cur.fetchone();

#returns a list of data (array)
def queryrows(self, sql):
cur = MySQLConnector._connection.cursor();
cur.execute(sql);
return cur.fetchmany();

Sumber kelas ini ada di sini, walaupun saya telah memperkenalkan beberapa modifikasi, alih-alih bekerja dengan file konfigurasi di dalam kelas

Sekarang, sebuah naskah

Dan sekarang, mari kita coba skrip kecil untuk bekerja dengan kelas dan dengan PyMySQL

Bisakah saya menjalankan mysql di anaconda?
Bisakah saya menjalankan mysql di anaconda?

Anakonda dan MySQL

Kami membuat instance ke objek MySQLConnector dengan parameter yang diperlukan, kami memiliki koneksi dan … itu saja

Catatan. Jangan beri nama file sebagai pymysql. py dan gunakan impor. Beri nama file yang berbeda. Anda mungkin mendapatkan kesalahan seperti ini

AttributeError. modul yang diinisialisasi sebagian 'pymysql' tidak memiliki atribut 'connect' (kemungkinan besar karena impor melingkar)

Apa itu Python? . Menurut indeks TIOBE, Python menempati peringkat 10 besar bahasa pemrograman terpopuler. Pada artikel ini, saya akan membagikan bagaimana kita dapat menggunakan Python untuk berinteraksi dengan database MySQL

Pengaturan Python
  1. Instal Anaconda — https. // www. anaconda. com/distribusi/
  2. Pilih python versi 3 (Versi 2 akan berhenti menerima pembaruan keamanan pada tahun 2020)

CATATAN. Anaconda adalah distribusi python dan R yang bertujuan untuk menyediakan semua yang Anda butuhkan

  • bahasa python inti,
  • paket python,
  • IDE/editor — Jupyter dan Spyder
  • Manajer paket — Conda, untuk mengelola paket Anda)
Pengaturan MySql
  1. Unduh dan instal MySql Community Server — https. //dev. mysql. com/unduh/mysql/
  2. Selama pengaturan instalasi, Anda akan dimintai kata sandi "root" pada langkah konfigurasi server
  3. Unduh dan instal MySql Workbench — https. //dev. mysql. com/unduh/meja kerja/
  4. Workbench adalah alat GUI yang memungkinkan kami mengelola database MySql Anda
  5. Luncurkan meja kerja, di halaman beranda, atur profil koneksi baru dengan konfigurasi (Metode koneksi. Standar (TCP/IP), Nama Inang. 127. 0. 0. 1, Pelabuhan. 3306,Nama pengguna. root, kata sandi. kata sandi Anda) dan uji koneksi Anda
  6. Klik dua kali pada instance lokal Anda dan itu akan membawa Anda ke tampilan skema tempat Anda dapat melihat semua database dan tabel Anda
Pengaturan MySql-Connector-Python
  1. Ini adalah driver python untuk menghubungkan ke server MySql
  2. Menggunakan terminal dan conda untuk mengunduh
conda install -c anaconda mysql-connector-python
Hubungkan ke MySql
  1. Luncurkan Anaconda-Navigator untuk memberi Anda daftar aplikasi yang tersedia untuk diinstal. Aplikasi yang kami minati adalah Jupyter Notebook yang merupakan IDE python berbasis web. Instal dan luncurkan
  2. Di notebook, buat file python baru. Di sel pertama, tulis kode berikut untuk menguji koneksi mysql
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)

3. Jika berhasil, Anda harus mengembalikan objek dengan alamat memorinya

<mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
Membuat Database
  1. Mari buat database bernama mydatabase
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydatabase")
_

2. Selanjutnya, kami akan mencoba untuk terhubung ke database baru ini

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)
Buat Tabel
  1. Di database baru kita, mari buat tabel baru bernama pelanggan untuk menyimpan informasi yang terkait dengan pelanggan Anda
  2. Dalam sql di bawah ini, kami membuat tabel dengan judul pelanggan dengan 3 kolom id judul, nama dan alamat. Id kolom menyimpan data bertipe integer yang dilambangkan dengan
    <mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
    3. Id kolom dimaksudkan untuk menyimpan kunci unik untuk setiap catatan. Ini dilakukan dengan menggunakan
    <mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
    _4. Itu juga harus bertambah saat catatan baru ditambahkan oleh
    <mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
    5
  3. Untuk nama kolom dan alamat, menyimpan data karakter tipe maksimum 255, dilambangkan dengan
    <mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
    6
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")
_Tambahkan catatan ke dalam tabel
  1. Mari tambahkan beberapa data ke dalam tabel baru kita
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)

mycursor = mydb.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("David", "California")mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "record(s) inserted.")

2. Untuk menyisipkan beberapa data, kelompokkan data dalam tanda kurung siku, dipisahkan dengan koma. Ganti

<mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
_7 dengan
<mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
8

import mysql.connectormydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)
mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"val = [
("Lily", "California"),
("David", "San Francisco"),
("Micheal", "Las Vegas"),
("Sarah", "New York")
]
mycursor.executemany(sql, val)mydb.commit()print(mycursor.rowcount, "record(s) inserted.")
_Pilih rekaman dari tabel
  1. Untuk mengambil semua data dari tabel, gunakan
    <mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
    9 , di mana tanda bintang berarti semua
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)

mycursor = mydb.cursor()
sql = "SELECT * FROM customers"mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
print(x)

2. To select specific column, use SELECT instead of *. For example

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydatabase")
0.

3. Alih-alih

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydatabase")
_1 kita dapat menggunakan
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydatabase")
2 untuk mengambil baris pertama dari hasil

4. Kami dapat menerapkan filter ke pencarian kami menggunakan kata kunci WHERE. CATATAN. Perhatikan bagaimana nilai kueri disimpan dalam variabel terpisah. Ini adalah teknik yang disebut kueri berparameter untuk mencegah injeksi SQL

import mysql.connectormydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)
mycursor = mydb.cursor()sql = "SELECT * FROM customers WHERE address = %s"
adr = ("California", )
mycursor.execute(sql, adr)myresult = mycursor.fetchall()for x in myresult:
print(x)

5. Kita juga dapat membatasi jumlah hasil pencarian dengan menambahkan

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydatabase")
3

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
0Sortir Catatan
  1. Kami dapat mengambil data dari tabel dalam urutan menaik. Untuk membuatnya dalam urutan menurun, tambahkan
    import mysql.connector

    mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="password"
    )

    mycursor = mydb.cursor()

    mycursor.execute("CREATE DATABASE mydatabase")
    4 setelah nama
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
1Hapus catatan
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
2Lepaskan tabel
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
3Perbarui Catatan
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
4Bergabung dengan Tabel
  1. Mari buat 2 tabel lagi, salah satunya disebut produk yang menyimpan informasi seperti product_id, nama produk dan harganya. Tabel lain adalah pesanan, menyimpan semua pesanan dengan masing-masing berisi id_pesanan, id_produk dan id_pelanggan. Alasan mengapa kami tidak mengikat order_id dengan nama produk atau nama pelanggan adalah karena nilai-nilai ini mungkin berubah di masa mendatang dan untuk mencegah pembaruan nilai dalam banyak tabel, kami biasanya tetap berpegang pada nilai yang konstan, dalam hal ini nomor indeksnya
  2. Membuat tabel produk
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
5

3. Membuat tabel pesanan

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
6

4. Selanjutnya kita ingin menggabungkan 2 tabel. Ada 2 jenis query JOIN yaitu INNER JOIN dan OUTER JOIN. Yang pertama hanya menunjukkan hasil di mana semua kriteria penggabungan terpenuhi artinya menunjukkan catatan dengan kolom umum

CATATAN. JOIN kata kunci secara default berarti INNER JOIN, maka Anda dapat menggunakan JOIN atau INNER JOIN

5. Kami akan menampilkan daftar semua pelanggan dengan id pesanan masing-masing. Hubungan antara pelanggan dan pesanan mereka disimpan dalam tabel pesanan. Untuk melakukan ini, kami menunjukkan nama pelanggan dan id pesanan dari tabel gabungan pelanggan dan pesanan dengan kriteria id pelanggan yang cocok

CATATAN. Anda dapat menambahkan alias ke setiap tabel dan mereferensikan nama kolom dari alias

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
7

6. Di bawah ini adalah hasil dari penggunaan JOIN. Perhatikan tabel tidak menampilkan daftar lengkap pelanggan karena beberapa pelanggan tidak memiliki id pesanan

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
_8

7. Untuk mendemonstrasikan OUTER JOIN, kali ini kita akan menggabungkan pesanan ke tabel pelanggan tetapi kita akan PILIH DARI pelanggan, bukan pesanan

import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password"
)

print(mydb)
_9

8. Di bawah ini menunjukkan hasil menggunakan LEFT JOIN. Perhatikan sekarang kita memiliki "Sarah" tanpa id pesanan di hasilnya. Itulah fungsi dari LEFT JOIN, artinya menampilkan record lengkap dari tabel LEFT (pelanggan) terlepas dari apakah kriteria terpenuhi. RIGHT JOIN melakukan hal yang sama kecuali menunjukkan catatan lengkap dari tabel kanan

<mysql.connector.connection_cext.CMySQLConnection object at 0x10b4e1320>
0

9. Sekarang, mari kembali ke INNER JOIN tetapi dengan banyak tabel. Karena kami ingin menampilkan tabel pesanan, yang berisi id pesanan, nama pelanggan, nama produk, dan harga produk, kueri SELECT kami harus DARI tabel pesanan. Selanjutnya kami ingin menggabungkan pesanan dengan produk (dengan menemukan id produk yang cocok) dan tabel pelanggan (dengan menemukan id pelanggan yang cocok)

Bagaimana cara menginstal modul MySQL di Anaconda?

Hubungkan ke MySql . Aplikasi yang kami minati adalah Jupyter Notebook yang merupakan IDE python berbasis web. Instal dan luncurkan. Di notebook, buat file python baru. Launch Anaconda-Navigator to bring you a list of applications available to install. The application we are interested in is Jupyter Notebook which is a web-based python IDE. Install and launch it. In the notebook, create a new python file.

Bisakah saya menggunakan MySQL di notebook Jupyter?

Dalam posting ini Anda akan mempelajari dua cara mudah untuk menggunakan Python dan SQL dari antarmuka notebook Jupyter dan membuat kueri SQL dengan beberapa baris kode. Kedua metode ini hampir agnostik database, jadi Anda dapat menggunakannya untuk database SQL pilihan Anda. MySQL, Postgres, Snowflake, MariaDB, Azure, dll.

Bagaimana cara menjalankan MySQL dengan Python?

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

Apakah MySQL kompatibel dengan Python?

Server MySQL akan menyediakan semua layanan yang diperlukan untuk menangani database Anda. Setelah server aktif dan berjalan, Anda dapat menghubungkan aplikasi Python Anda dengannya menggunakan MySQL Connector/Python .