Cara menggunakan apa itu pymysql?

Berikut adalah beberapa snippets cara melakukan koneksi ke database MySQL menggunakan python. Modul yang digunakan pada contoh adalah PyMySQL (tentang pymysql dapat dilihat pada alamat ini).

Operasi select tanpa parameter

import pymysql conn = pymysql.connect('localhost','userdbku','passdbku','dbku') # ganti sesuai parameter koneksi ke db cur = conn.cursor(pymysql.cursors.DictCursor) # Agar output berupa dictionary sql = """ SELECT * FROM kontak """ cur.execute(sql) result = cur.fetchall() cur.close() # tutup kursor conn.close() # tutup koneksi for r in result: print(r)

Operasi select dengan parameter

import pymysql conn = pymysql.connect('localhost','userdbku','passdbku','dbku') cur = conn.cursor(pymysql.cursors.DictCursor) sql = """ SELECT * FROM kontak where lower(nama) like %s """ params = ('jarjit') cur.execute(sql,params) result = cur.fetchall() cur.close() conn.close() for r in result: print(r)

Operasi insert

import pymysql conn = pymysql.connect('localhost','userdbku','passdbku','dbku') cur = conn.cursor() sql = """ INSERT INTO kontak(nama,telp,email) VALUES(%s,%s,%s) """ params = ('Ipin','1234531','') # parameter untuk isian result = cur.execute(sql,params) conn.commit() # commit agar data tersimpan cur.close() conn.close() if result: print('Data berhasil disimpan')

Untuk operasi yang melakukan perubahan data (insert,update,delete) jangan lupa menyertakan perintah commit() agar perubahan tersimpan pada server.

Sekian, semoga bermanfaat

Salam

Bagaimana cara saya terhubung ke database MySQL menggunakan program python?

Menghubungkan ke MYSQL dengan Python 2 dalam tiga langkah

1 - Pengaturan

Anda harus menginstal driver MySQL sebelum melakukan sesuatu. Tidak seperti PHP, Hanya driver SQLite diinstal secara default dengan Python. Paket yang paling sering digunakan adalah MySQLdb tetapi sulit untuk menginstalnya menggunakan easy_install. Harap dicatat MySQLdb hanya mendukung Python 2.

Untuk pengguna Windows, Anda bisa mendapatkan exe dari MySQLdb .

Untuk Linux, ini adalah paket biasa (python-mysqldb). (Anda dapat menggunakan Sudo apt-get install python-mysqldb (untuk distro berbasis debian), yum install MySQL-python (untuk berbasis rpm), atau dnf install python-mysql (untuk distro Fedora modern) di baris perintah untuk mengunduh.)

Untuk Mac, Anda dapat menginstal MySQLdb menggunakan Macport .

2 - Penggunaan

Setelah menginstal, Nyalakan kembali. Ini tidak wajib, Tapi itu akan mencegah saya menjawab 3 atau 4 pertanyaan lain dalam posting ini jika ada masalah. Jadi, silakan reboot.

Maka itu seperti menggunakan paket lain:

#!/usr/bin/python import MySQLdb db = MySQLdb.connect(Host="localhost", # your Host, usually localhost user="john", # your username passwd="megajonhy", # your password db="jonhydb") # name of the data base # you must create a Cursor object. It will let # you execute all the queries you need cur = db.cursor() # Use all the SQL you like cur.execute("SELECT * FROM YOUR_TABLE_NAME") # print all the first cell of all the rows for row in cur.fetchall(): print row[0] db.close()

Tentu saja, ada ribuan kemungkinan dan opsi; ini adalah contoh yang sangat mendasar. Anda harus melihat dokumentasi. Titik awal yang baik .

3 - Penggunaan lebih lanjut

Setelah Anda tahu cara kerjanya, Anda mungkin ingin menggunakan ORM untuk menghindari menulis SQL secara manual dan memanipulasi tabel Anda karena mereka adalah objek Python. ORM paling terkenal di komunitas Python adalah SQLAlchemy .

Saya sangat menyarankan Anda untuk menggunakannya: hidup Anda akan jauh lebih mudah.

Saya baru-baru ini menemukan permata lain di dunia Python: peewee . Ini ORM yang sangat lite, sangat mudah dan cepat untuk setup kemudian digunakan. Itu membuat hari saya untuk proyek-proyek kecil atau aplikasi yang berdiri sendiri, Di mana menggunakan alat-alat besar seperti SQLAlchemy atau Django berlebihan:

import peewee from peewee import * db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy') class Book(peewee.Model): author = peewee.CharField() title = peewee.TextField() class Meta: database = db Book.create_table() book = Book(author="me", title='Peewee is cool') book.save() for book in Book.filter(author="me"): print book.title

Contoh ini berhasil di luar kotak. Tidak ada yang dibutuhkan selain peewee (pip install peewee).

Inilah salah satu cara untuk melakukannya, menggunakan MySQLdb , yang hanya mendukung Python 2:

#!/usr/bin/python import MySQLdb # Connect db = MySQLdb.connect(Host="localhost", user="appuser", passwd="", db="onco") cursor = db.cursor() # Execute SQL select statement cursor.execute("SELECT * FROM location") # Commit your changes if writing # In this case, we are only reading data # db.commit() # Get the number of rows in the resultset numrows = cursor.rowcount # Get and display one row at a time for x in range(0, numrows): row = cursor.fetchone() print row[0], "-->", row[1] # Close the connection db.close()

Referensi di sini

Jika Anda tidak memerlukan MySQLdb, tetapi akan menerima perpustakaan apa pun, saya akan sangat, sangat merekomendasikan Konektor MySQL/Python dari MySQL: //dev.mysql.com/downloads/connector/python/ .

Ini adalah satu paket (sekitar 110k), Python murni, jadi ini adalah sistem yang independen, dan sangat mudah untuk diinstal. Anda cukup mengunduh, mengklik dua kali, mengonfirmasi perjanjian lisensi dan pergi. Tidak perlu untuk Xcode, MacPorts, kompilasi, restart ...

Kemudian Anda terhubung seperti:

import mysql.connector cnx = mysql.connector.connect(user='scott', password='tiger', Host='127.0.0.1', database='employees') try: cursor = cnx.cursor() cursor.execute(""" select 3 from your_table """) result = cursor.fetchall() print result finally: cnx.close()

Berhenti Menggunakan MySQLDb jika Anda ingin menghindari menginstal header mysql hanya untuk mengakses mysql dari python.

Gunakan pymysql . Ia melakukan semua yang dilakukan MySQLDb, tetapi diimplementasikan sepenuhnya dalam Python denganNO External Dependencies. Ini membuat proses instalasi pada semua sistem operasi konsisten dan mudah. pymysql adalah pengganti MySQLDb dan IMHO tidak ada alasan untuk menggunakan MySQLDb untuk apa pun ... PERNAH! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, tapi itu hanya saya.

Instalasi

pip install pymysql

Itu saja ... Anda siap bermain.

Contoh penggunaan dari pymysql Github repo

import pymysql.cursors import pymysql # Connect to the database connection = pymysql.connect(Host='localhost', user='user', password='passwd', db='db', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: # Create a new record sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)" cursor.execute(sql, ('[email protected]', 'very-secret')) # connection is not autocommit by default. So you must commit to save # your changes. connection.commit() with connection.cursor() as cursor: # Read a single record sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s" cursor.execute(sql, ('[email protected]',)) result = cursor.fetchone() print(result) finally: connection.close()

JUGA - Ganti MySQLdb dalam kode yang ada dengan cepat dan transparan

Jika Anda memiliki kode yang menggunakan MySQLdb, Anda dapat dengan mudah menggantinya dengan pymysql menggunakan proses sederhana ini:

# import MySQLdb << Remove this line and replace with: import pymysql pymysql.install_as_MySQLdb()

Semua referensi selanjutnya ke MySQLdb akan menggunakan pymysql secara transparan.

Coba gunakan MySQLdb . MySQLdb hanya mendukung Python 2.

Ada cara halaman di sini: //www.kitebird.com/articles/pydbapi.html

Dari halaman:

# server_version.py - retrieve and display database server version import MySQLdb conn = MySQLdb.connect (Host = "localhost", user = "testuser", passwd = "testpass", db = "test") cursor = conn.cursor () cursor.execute ("SELECT VERSION()") row = cursor.fetchone () print "server version:", row[0] cursor.close () conn.close ()

Sebagai driver db, ada juga oursql . Beberapa alasan yang tercantum pada tautan itu, yang mengatakan mengapa oursql lebih baik:

  • oursql memiliki parameterisasi nyata, mengirimkan SQL dan data ke MySQL sepenuhnya secara terpisah.
  • oursql memungkinkan teks atau data biner untuk di-stream ke dalam database dan di-stream dari database, alih-alih meminta semua buffer di klien.
  • oursql dapat menyisipkan baris dengan malas dan mengambil baris dengan malas.
  • oursql memiliki dukungan unicode secara default.
  • oursql mendukung python 2.4 hingga 2.7 tanpa peringatan penghentian pada 2.6+ (lihat PEP 218) dan tanpa gagal total pada 2.7 (lihat PEP 328).
  • oursql berjalan secara native di python 3.x.

Jadi bagaimana cara terhubung ke mysql dengan oursql?

Sangat mirip dengan mysqldb:

import oursql db_connection = oursql.connect(Host='127.0.0.1',user='foo',passwd='foobar',db='db_name') cur=db_connection.cursor() cur.execute("SELECT * FROM `tbl_name`") for row in cur.fetchall(): print row[0]

Tutorial dalam dokumentasi cukup bagus.

Dan tentu saja untuk ORM SQLAlchemy adalah pilihan yang baik, sebagaimana telah disebutkan dalam jawaban lain.

Terlepas dari semua jawaban di atas, jika Anda tidak ingin terhubung ke database tertentu dimuka, misalnya, jika Anda masih ingin membuat database (!), Anda dapat menggunakan connection.select_db(database), seperti yang ditunjukkan pada berikut ini.

import pymysql.cursors connection = pymysql.connect(Host='localhost', user='mahdi', password='mahdi', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) cursor = connection.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS "+database) connection.select_db(database) sql_create = "CREATE TABLE IF NOT EXISTS "+tablename+(timestamp DATETIME NOT NULL PRIMARY KEY)" cursor.execute(sql_create) connection.commit() cursor.close()

SqlAlchemy

SQLAlchemy adalah Python SQL toolkit dan Object Relational Mapper yang memberi pengembang aplikasi kekuatan penuh dan fleksibilitas SQL. SQLAlchemy menyediakan rangkaian lengkap pola ketekunan tingkat perusahaan yang terkenal, dirancang untuk akses database yang efisien dan berkinerja tinggi, diadaptasi menjadi bahasa domain yang sederhana dan Pythonic.

Installation

pip install sqlalchemy

Permintaan RAW

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session engine = create_engine("mysql://<user_name>:<password>@<Host_name>/<db_name>") session_obj = sessionmaker(bind=engine) session = scoped_session(session_obj) # insert into database session.execute("insert into person values(2, 'random_name')") session.flush() session.commit()

Cara ORM

from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session Base = declarative_base() engine = create_engine("mysql://<user_name>:<password>@<Host_name>/<db_name>") session_obj = sessionmaker(bind=engine) session = scoped_session(session_obj) # Bind the engine to the metadata of the Base class so that the # declaratives can be accessed through a DBSession instance Base.metadata.bind = engine class Person(Base): __table= 'person' # Here we define columns for the table person # Notice that each column is also a normal Python instance attribute. id = Column(Integer, primary_key=True) name = Column(String(250), nullable=False) # insert into database person_obj = Person(id=12, name="name") session.add(person_obj) session.flush() session.commit()

MySQLdb adalah cara yang mudah. Anda bisa menjalankan query SQL melalui koneksi. Periode.

Cara pilihan saya, yang juga Pythonic, adalah dengan menggunakan SQLAlchemy sebagai gantinya. Berikut adalah terkait permintaan tutorial, dan di sini adalah tutorial tentang kemampuan ORM dari SQLALchemy.

Hanya modifikasi pada jawaban di atas. Cukup jalankan perintah ini untuk menginstal mysql untuk python

Sudo yum install MySQL-python Sudo apt-get install MySQL-python

ingat! Ini sensitif huruf.

untuk Python3.6 saya menemukan dua driver: pymysql dan mysqlclient. Saya menguji kinerja di antara mereka dan mendapatkan hasilnya: mysqlclient lebih cepat.

di bawah ini adalah proses pengujian saya (perlu menginstal python lib profilehooks untuk menganalisis waktu berlalu:

sql mentah: select * from FOO;

segera jalankan di terminal mysql: 46410 rows in set (0.10 sec)

pymysql (2.4s):

from profilehooks import profile import pymysql.cursors import pymysql connection = pymysql.connect(Host='localhost', user='root', db='foo') c = connection.cursor() @profile(immediate=True) def read_by_pymysql(): c.execute("select * from FOO;") res = c.fetchall() read_by_pymysql()

inilah profil pymysql:  


mysqlclient (0,4s)

from profilehooks import profile import MySQLdb connection = MySQLdb.connect(Host='localhost', user='root', db='foo') c = connection.cursor() @profile(immediate=True) def read_by_mysqlclient(): c.execute("select * from FOO;") res = c.fetchall() read_by_mysqlclient()

inilah profil mysqlclient:  

Jadi, tampaknya mysqlclient jauh lebih cepat daripada pymysql

Lihat juga Badai . Ini adalah alat pemetaan SQL sederhana yang memungkinkan Anda untuk dengan mudah mengedit dan membuat entri SQL tanpa menulis kueri.

Ini adalah contoh sederhana:

from storm.locals import * # User will be the mapped object; you have to create the table before mapping it class User(object): __storm_table__ = "user" # table name ID = Int(primary=True) #field ID name= Unicode() # field name database = create_database("mysql://root:[email protected]:3306/databaseName") store = Store(database) user = User() user.name = u"Mark" print str(user.ID) # None store.add(user) store.flush() # ID is AUTO_INCREMENT print str(user.ID) # 1 (ID) store.commit() # commit all changes to the database

Untuk menemukan dan menggunakan objek:

michael = store.find(User, User.name == u"Michael").one() print str(user.ID) # 10

Temukan dengan kunci utama:

print store.get(User, 1).name #Mark

Untuk informasi lebih lanjut lihat tutorial .

Cara terbaik untuk terhubung ke MySQL dari python adalah dengan Menggunakan Konektor MySQL/Python karena itu adalah driver Oracle resmi untuk MySQL untuk bekerja dengan Python dan bekerja dengan Python 3 dan Python 2.

ikuti langkah-langkah yang disebutkan di bawah ini untuk menghubungkan MySQL

  1. pasang konektor menggunakan pip

    pip install mysql-connector-python

atau Anda dapat mengunduh installer dari //dev.mysql.com/downloads/connector/python/

  1. Gunakan metode connect() dari mysql connector python untuk terhubung ke MySQL.pass argumen yang diperlukan ke metode connect(). mis. Host, nama pengguna, kata sandi, dan nama basis data.

  2. Buat objek cursor dari objek koneksi yang dikembalikan oleh connect()method untuk menjalankan query SQL.

  3. tutup koneksi setelah pekerjaan Anda selesai.

Contoh :

import mysql.connector from mysql.connector import Error try: conn = mysql.connector.connect(Host='hostname', database='db', user='root', password='passcode') if conn.is_connected(): cursor = conn.cursor() cursor.execute("select database();") record = cursor.fetchall() print ("Your connected to - ", record) except Error as e : print ("Print your error msg", e) finally: #closing database connection. if(conn.is_connected()): cursor.close() conn.close()

Referensi - //pynative.com/python-mysql-database-connection/

API Penting dari Konektor MySQL Python

  • Untuk operasi DML - Gunakan cursor.execute() dan cursor.executemany() untuk menjalankan kueri. dan setelah ini gunakan connection.commit() untuk mempertahankan perubahan Anda pada DB

  • Untuk mengambil data - Gunakan cursor.execute() untuk menjalankan kueri dan cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE) untuk mengambil data

mysqlclient adalah yang terbaik karena yang lain hanya menyediakan dukungan untuk versi python tertentu

pip install mysqlclient

contoh kode

import mysql.connector import _mysql db=_mysql.connect("127.0.0.1","root","umer","sys") #db=_mysql.connect(Host,user,password,db) # Example of how to insert new values: db.query("""INSERT INTO table1 VALUES ('01', 'myname')""") db.store_result() db.query("SELECT * FROM new1.table1 ;") #new1 is scheme table1 is table mysql res= db.store_result() for i in range(res.num_rows()): print(result.fetch_row())

lihat //github.com/PyMySQL/mysqlclient-python

instal driver terlebih dahulu

pip install MySQL-python

Kemudian kode dasar seperti ini:

#!/usr/bin/python import MySQLdb try: db = MySQLdb.connect(Host="localhost", # db server, can be a remote one db="mydb" # database user="mydb", # username passwd="mydb123", # password for this username ) # Create a Cursor object cur = db.cursor() # Create a query string. It can contain variables query_string = "SELECT * FROM MY_TABLE" # Execute the query cur.execute(query_string) # Get all the rows present the database for each_row in cur.fetchall(): print each_row # Close the connection db.close() except Exception, e: print 'Error ', e

Ini adalah koneksi Mysql DB

from flask import Flask, render_template, request from flask_mysqldb import MySQL app = Flask(__name__) app.config['MYSQL_Host'] = 'localhost' app.config['MYSQL_USER'] = 'root' app.config['MYSQL_PASSWORD'] = 'root' app.config['MYSQL_DB'] = 'MyDB' mysql = MySQL(app) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == "POST": details = request.form cur = mysql.connection.cursor() cur.execute ("_Your query_") mysql.connection.commit() cur.close() return 'success' return render_template('index.html') if __== '__main__': app.run()

anda dapat menghubungkan kode python Anda ke mysql dengan cara ini.

import MySQLdb db = MySQLdb.connect(Host="localhost", user="appuser", passwd="", db="onco") cursor = db.cursor()

Pertama instal driver (Ubuntu)

  • Sudo apt-get install python-pip

  • Sudo pip instal -U pip

  • Sudo apt-get install python-dev libmysqlclient-dev

  • Sudo apt-get install MySQL-python

kode koneksi database MySQL

import MySQLdb conn = MySQLdb.connect (Host = "localhost",user = "root",passwd = "pass",db = "dbname") cursor = conn.cursor () cursor.execute ("SELECT VERSION()") row = cursor.fetchone () print "server version:", row[0] cursor.close () conn.close ()

Untuk python 3.3

CyMySQL //github.com/nakagami/CyMySQL

Saya telah menginstal pip pada windows 7 saya, cukup instal cymysql

(Anda tidak perlu cython) cepat dan tidak menyakitkan

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.

Apa itu CRUD di Python?

Apa itu CRUD CREATE (Menambah Data) adalah cara bagaimana kita menambah data ke suatu database. READ (Menampilkan atau Menambah Data) adalah bagaimana cara kita menampilkan data yang tadi telah kita tambahkan pada proses sebelumnya yaitu CREATE (Menambah Data).

Postingan terbaru

LIHAT SEMUA