Sebagian besar jawaban di sini fokus pada pemasangan pustaka MySQLdb, saya benar-benar menyarankan untuk memilih Konektor MySQL / Python yang disediakan oleh MySQL / Oracle, yang membuat prosesnya lebih sederhana: stackoverflow.com/questions/372885/…
Tn. Napik
8
Masalah dengan menggunakan Connector / Python Oracle adalah memiliki bug halus dan masalah integrasi lainnya. Sangat mudah untuk menginstal, tetapi hampir tidak mungkin untuk bekerja untuk semua kasus penggunaan di dunia nyata yang telah saya coba. Karenanya mengapa saya selalu merekomendasikan MySQLdb.
Joe C.
7
@ Mr.Napik saya menggunakan pymysqlkarena ini murni Python gratis berdasarkan perbandingan ini .
Cees Timmerman
Jawaban:
1246
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.)
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/pythonimportMySQLdb
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 rowsfor 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 bagus .
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.
Baru-baru ini saya 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 adalah berlebihan:
import peewee
from peewee import*
db =MySQLDatabase('jonhydb', user='john', passwd='megajonhy')classBook(peewee.Model):
author = peewee.CharField()
title = peewee.TextField()classMeta:
database = db
Book.create_table()
book =Book(author="me", title='Peewee is cool')
book.save()for book inBook.filter(author="me"):print book.title
Contoh ini berhasil di luar kotak. Tidak ada yang lain selain memiliki peewee ( pip install peewee) yang diperlukan.
Senang Anda suka peewee !! Saya telah menambahkan dukungan untuk MySQL serta beberapa dokumentasi tentang pengintegrasian dengannya. Selamat melakukan peretasan!
coleifer
14
Catatan, pada penulisan ini, MySQLdb tidak mendukung Python 3. Halaman sourceforge mengatakan "dukungan Python 3 segera hadir" tetapi belum diperbarui sejak 2012-10-08. Untuk Python 3 ada PyMySQL dan oursql .
paul
8
Perhatikan juga hal berikut yang diperlukan:pip install MySQL-python
Ben Crowhurst
5
Jawaban ini akan lebih membantu dengan contoh koneksi ke server eksternal pada port non-standar untuk menunjukkan bagaimana melakukannya. Mengatakan localhost adalah cara biasa untuk melakukannya adalah omong kosong.
Anthony
3
Peewee telah mengubah perilaku default dan tidak menggunakan autocommit secara default lagi. Bahkan situasi driver DB telah berubah sekarang. Pertanyaan perlu diperbarui, tetapi karena penyalahgunaan hasil edit pada beberapa jawaban saya, saya tidak mengeditnya lagi.
e-satis
189
Inilah salah satu cara untuk melakukannya, menggunakan MySQLdb , yang hanya mendukung Python 2:
#!/usr/bin/pythonimportMySQLdb# 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 timefor x in range(0, numrows):
row = cursor.fetchone()print row[0],"-->", row[1]# Close the connection
db.close()
adakah kebutuhan untuk melakukan dalam contoh ini karena Anda tidak memodifikasi database?
sumanth232
3
WASPADALAH - modul ini tidak memiliki dukungan zona waktu untuk koneksi
kommradHomer
Itu tidak berfungsi pada hosting bersama saya. Mengatakan itu No module named MySQLdb. Bagaimana saya bisa menggunakan mysql dengan python di shared hosting. Ada alternatif?
Bhavesh Gangani
@BhaveshGangani Anda harus menghubungi host Anda dan bertanya mengapa perpustakaan Python mereka dukung. Jika mereka mendukung pypi, maka Anda selalu dapat memuat paket ketika penyebaran Anda terjadi.
George Stocker
1
Menariknya meskipun dokumen mengatakan ini hanya bekerja dengan python 2, sepertinya berfungsi dengan python 3 untuk saya
lucidbrot
122
Oracle (MySQL) sekarang mendukung konektor Python murni. Itu berarti tidak ada binari untuk diinstal: itu hanya perpustakaan Python. Ini disebut "Connector / Python".
Apakah ini lebih cepat daripada menggunakan mysqldb?
alwbtc
8
Ya itu. Juga, ini lebih mudah daripada MySQLdb dan API lebih baik menurut saya. Ini seharusnya jawabannya.
Anthony
1
menggunakan konektor mysql resmi python adalah cara terbaik untuk memenangkan waktu
Anas
2
@ J0hnG4lt Anda cukup mengklik "Tidak, terima kasih, mulai saja unduh saya" di bawah formulir login (yang sebenarnya tampak wajib, tetapi tidak wajib).
ComFreek
6
@ComFreek luar biasa. Bagaimana itu lebih baik? Bisakah kita berhenti menerapkan "alur kerja Windows". Manajemen paket ada.
J0hnG4lt
120
Jika Anda tidak memerlukan MySQLdb, tetapi akan menerima perpustakaan apa pun, saya akan sangat, sangat merekomendasikan Konektor MySQL / Python dari MySQL: http://dev.mysql.com/downloads/connector/python/ .
Ini adalah satu paket (sekitar 110k), Python murni, jadi itu 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()
Tidak sesederhana yang Anda klaim. Ketika saya mencoba untuk menginstal rpm saya mendapat beberapa masalah ketergantungan (FileDigests dan PayloadIsXz) dari RPM saya: rpm -i mysql-connector-python-1.1.5-1.el6.noarch.rpmerror: Failed dependencies:rpmlib(FileDigests) <= 4.6.0-1 is needed by mysql-connector-python-1.1.5-1.el6.noarchrpmlib(PayloadIsXz) <= 5.2-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
tatlar
2
Saya dulu lebih suka perpustakaan ini, tetapi tidak lagi didukung secara resmi di PyPi. Sejak saya pindah ke MySQLdb.
Steven Mercatante
2
@Arms: tidak lagi didukung secara resmi di PyPi? Apakah Anda punya sumber untuk ini?
Messa
7
pip install mysql-connector-pythonjuga akan bekerja. Saya tidak melihat di mana dikatakan tidak lagi didukung di PyPi? Sangat bagus jika Anda tidak memiliki akses ke kompiler gcc / C pada sistem Anda, dan karenanya tidak dapat menginstal mysqldb.
decvalts
7
per 7 Nov 2016, paket untuk pip hanya konektor mysql, pip search mysql-connectoruntuk menemukan nama paket. jawaban dari sini: stackoverflow.com/a/22829966/2048266
nommer
117
Berhenti Menggunakan MySQLDb jika Anda ingin menghindari menginstal header mysql hanya untuk mengakses mysql dari python.
Gunakan pymysql . Itu melakukan semua apa yang dilakukan MySQLDb, tapi itu diterapkan murni dalam Python tanpa NO Ketergantungan Eksternal . Ini membuat proses instalasi pada semua sistem operasi konsisten dan mudah. pymysqladalah setetes pengganti untuk MySQLDb dan IMHO tidak ada alasan untuk pernah menggunakan MySQLDb untuk apa pun ... PERNAH! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, tapi itu hanya aku.
Instalasi
pip install pymysql
Itu saja ... Anda siap bermain.
Contoh penggunaan dari repo pithysql Github
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.
"Selalu" sedikit kuat ... Apa yang salah dengan peewee atau sqlalchemy? Bahkan jika mereka ada sebagai perpustakaan ORM, mereka masih berguna
OneCricketeer
4
Tidak, saya pikir itu tidak kuat sama sekali. Diberi opsi untuk menggunakan MySQLDb atau PyMysql, saya pikir memilih PyMysql adalah sesuatu yang sulit karena ini adalah instalasi pip sederhana tanpa ketergantungan, sedangkan MySQLDb membutuhkan file header pengembangan mysql yang harus diinstal untuk platform OS Anda agar dapat berfungsi. Sqlalchemy tidak memperhitungkan faktor ini karena masih perlu membungkus modul yang dapat berbicara dengan mysql seperti PyMysql, MySQLDb, CyMySQL dll. Peewee terlihat menarik, saya akan memeriksanya
OkezieE
2
@ cricket_007 peewee dan sqlalchemly tidak mengimplementasikan konektor db mereka sendiri, mereka menyediakan lapisan di atas MySQLdb dll.
rocksportrocker
25
Coba gunakan MySQLdb . MySQLdb hanya mendukung Python 2.
Saya tidak mengerti 'berjalan secara native di python 3.x'. Saya hanya mencoba untuk menginstalnya dan bom setup.py keluar karena bahkan tidak menggunakan panggilan cetak yang kompatibel dengan Python 3. Kedengarannya hebat sampai saya benar-benar mencobanya.
otakucode
15
Jalankan perintah ini di terminal Anda untuk menginstal konektor mysql:
pip install mysql-connector-python
Dan jalankan ini di editor python Anda untuk terhubung ke MySQL:
Beberapa orang sudah menjawab pertanyaan Anda di sana. Anda hanya lupa untuk menjalankan mydb.commit()setelah memasukkan nilai ke dalam tabel
Sherzod
13
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 basis data yang efisien dan berkinerja tinggi, diadaptasi menjadi bahasa domain yang sederhana dan Pythonic.
Instalasi
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 importColumn,Integer,Stringfrom 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 instanceBase.metadata.bind = engine
classPerson(Base):
__tablename__ ='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()
Terlepas dari semua jawaban di atas, jika Anda tidak ingin terhubung ke database tertentu dimuka, misalnya, jika Anda ingin tetap 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()
MySQLdb adalah cara yang mudah. Anda bisa mengeksekusi query SQL melalui koneksi. Titik.
Cara pilihan saya, yang juga pythonic, adalah dengan menggunakan SQLAlchemy yang perkasa sebagai gantinya. Ini adalah tutorial terkait permintaan , dan ini tutorial tentang kemampuan ORM dari SQLALchemy.
Tautannya sudah mati, dapatkah Anda melihatnya dan memperbaruinya dengan tautan yang benar?
Naveen Vijay
6
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
importMySQLdb
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
Meskipun beberapa dari Anda mungkin tandai ini sebagai duplikat dan mendapatkan marah bahwa saya menyalin jawaban orang lain, saya akan benar-benar seperti untuk menyoroti aspek respon Mr. Napik ini. Karena saya melewatkan ini, saya menyebabkan downtime situs web nasional (9 menit). Jika saja seseorang membagikan informasi ini, saya bisa mencegahnya!
Ini kodenya:
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()
Yang penting di sini adalah klausa Coba dan Akhirnya . Ini memungkinkan koneksi ke SELALU ditutup, terlepas dari apa yang terjadi di bagian kursor / sqlstatement kode. Banyak koneksi aktif menyebabkan DBLoadNoCPU lonjakan dan dapat membuat server db lumpuh.
Saya harap peringatan ini membantu menyelamatkan server dan pada akhirnya pekerjaan! : D
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
Gunakan connect()metode python connector mysql untuk terhubung ke MySQL.pass argumen yang diperlukan untuk connect()metode. yaitu Host, nama pengguna, kata sandi, dan nama basis data.
Membuat cursorobjek dari objek koneksi yang dikembalikan oleh connect()metode untuk menjalankan query SQL.
tutup koneksi setelah pekerjaan Anda selesai.
Contoh :
import mysql.connector
from mysql.connector importErrortry:
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("You're connected to - ", record)exceptErroras e :print("Print your error msg", e)finally:#closing database connection.if(conn.is_connected()):
cursor.close()
conn.close()
Untuk operasi DML - Gunakan cursor.execute()dan cursor.executemany()untuk menjalankan kueri. dan setelah ini gunakan connection.commit()untuk bertahan perubahan Anda ke DB
Untuk mengambil data - Gunakan cursor.execute()untuk menjalankan query dan cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE)untuk mengambil data
Saya menginstal MySQL-python via yum install. Instalasi selesai tetapi saya tidak dapat mengimpor modul MySQLdb. Dikatakan tidak ada modul seperti itu. Adakah yang tahu mengapa begitu?
user3527975
Tidak jelas jawaban yang Anda maksud ketika Anda mengatakan "jawaban di atas". Harap buat jawaban Anda lengkap dengan sendirinya. Jika Anda ingin merujuk ke jawaban lain, harap tautkan ke jawaban spesifik.
Flimm
5
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())
+1 untuk mengusulkan solusi tercepat untuk python 3. Namun, mysql.connectordan _mysqlberikan keduanya kesalahan impor (meskipun opsi kedua harus bekerja sesuai dengan dokumentasi). import MySQLdbbekerja, dan kemudianMySQLdb.connect...
Suzana
3
Lihat juga Storm . 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 itclassUser(object):
__storm_table__ ="user"# table name
ID =Int(primary=True)#field ID
name=Unicode()# field name
database = create_database("mysql://root:password@localhost:3306/databaseName")
store =Store(database)
user =User()
user.name = u"Mark"print str(user.ID)# None
store.add(user)
store.flush()# ID is AUTO_INCREMENTprint 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
#!/usr/bin/pythonimportMySQLdbtry:
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 databasefor each_row in cur.fetchall():print each_row
# Close the connection
db.close()exceptException, e:print'Error ', e
Pertanyaannya agak terlalu luas, tetapi jawaban ini tampaknya agak terlalu sempit (setidaknya dalam arti menginstal dan mengimpor modul saja tidak akan dilakukan). Tampaknya juga ada shell dan python yang dicampur dalam blok kode tunggal tanpa penjelasan atau petunjuk apa pun yang terjadi di mana dan melakukan apa.
pymysql
karena ini murni Python gratis berdasarkan perbandingan ini .Jawaban:
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), ataudnf 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:
Tentu saja, ada ribuan kemungkinan dan opsi; ini adalah contoh yang sangat mendasar. Anda harus melihat dokumentasi. Titik awal yang bagus .
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.
Baru-baru ini saya 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 adalah berlebihan:
Contoh ini berhasil di luar kotak. Tidak ada yang lain selain memiliki peewee (
pip install peewee
) yang diperlukan.sumber
pip install MySQL-python
Inilah salah satu cara untuk melakukannya, menggunakan MySQLdb , yang hanya mendukung Python 2:
Rujukan di sini
sumber
No module named MySQLdb
. Bagaimana saya bisa menggunakan mysql dengan python di shared hosting. Ada alternatif?Oracle (MySQL) sekarang mendukung konektor Python murni. Itu berarti tidak ada binari untuk diinstal: itu hanya perpustakaan Python. Ini disebut "Connector / Python".
http://dev.mysql.com/downloads/connector/python/
sumber
Jika Anda tidak memerlukan MySQLdb, tetapi akan menerima perpustakaan apa pun, saya akan sangat, sangat merekomendasikan Konektor MySQL / Python dari MySQL: http://dev.mysql.com/downloads/connector/python/ .
Ini adalah satu paket (sekitar 110k), Python murni, jadi itu 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:
sumber
rpm -i mysql-connector-python-1.1.5-1.el6.noarch.rpm
error: Failed dependencies:
rpmlib(FileDigests) <= 4.6.0-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
rpmlib(PayloadIsXz) <= 5.2-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
pip install mysql-connector-python
juga akan bekerja. Saya tidak melihat di mana dikatakan tidak lagi didukung di PyPi? Sangat bagus jika Anda tidak memiliki akses ke kompiler gcc / C pada sistem Anda, dan karenanya tidak dapat menginstalmysqldb
.pip search mysql-connector
untuk menemukan nama paket. jawaban dari sini: stackoverflow.com/a/22829966/2048266Gunakan pymysql . Itu melakukan semua apa yang dilakukan MySQLDb, tapi itu diterapkan murni dalam Python tanpa NO Ketergantungan Eksternal . Ini membuat proses instalasi pada semua sistem operasi konsisten dan mudah.
pymysql
adalah setetes pengganti untuk MySQLDb dan IMHO tidak ada alasan untuk pernah menggunakan MySQLDb untuk apa pun ... PERNAH! -PTSD from installing MySQLDb on Mac OSX and *Nix systems
, tapi itu hanya aku.Instalasi
pip install pymysql
Contoh penggunaan dari repo pithysql Github
Jika Anda memiliki kode yang menggunakan MySQLdb, Anda dapat dengan mudah menggantinya dengan pymysql menggunakan proses sederhana ini:
Semua referensi selanjutnya ke MySQLdb akan menggunakan pymysql secara transparan.
sumber
Coba gunakan MySQLdb . MySQLdb hanya mendukung Python 2.
Ada cara bagaimana halaman di sini: http://www.kitebird.com/articles/pydbapi.html
Dari halaman:
sumber
localhost
)?Sebagai driver db, ada juga oursql . Beberapa alasan yang tercantum pada tautan itu, yang mengatakan mengapa oursql lebih baik:
Jadi bagaimana cara terhubung ke mysql dengan oursql?
Sangat mirip dengan mysqldb:
The tutorial dalam dokumentasi cukup baik.
Dan tentu saja untuk ORM SQLAlchemy adalah pilihan yang baik, seperti yang telah disebutkan dalam jawaban lain.
sumber
Jalankan perintah ini di terminal Anda untuk menginstal konektor mysql:
Dan jalankan ini di editor python Anda untuk terhubung ke MySQL:
Sampel untuk menjalankan Perintah MySQL (dalam python edior Anda):
Untuk perintah lebih lanjut: https://www.w3schools.com/python/python_mysql_getstarted.asp
sumber
mysql-connector
saja. stackoverflow.com/questions/59405740/...mydb.commit()
setelah memasukkan nilai ke dalam tabelSqlAlchemy
Instalasi
Permintaan RAW
Cara ORM
sumber
Terlepas dari semua jawaban di atas, jika Anda tidak ingin terhubung ke database tertentu dimuka, misalnya, jika Anda ingin tetap membuat database (!), Anda dapat menggunakan
connection.select_db(database)
, seperti yang ditunjukkan pada berikut ini.sumber
MySQLdb adalah cara yang mudah. Anda bisa mengeksekusi query SQL melalui koneksi. Titik.
Cara pilihan saya, yang juga pythonic, adalah dengan menggunakan SQLAlchemy yang perkasa sebagai gantinya. Ini adalah tutorial terkait permintaan , dan ini tutorial tentang kemampuan ORM dari SQLALchemy.
sumber
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):
inilah profil pymysql:
mysqlclient (0,4s)
inilah profil mysqlclient:
Jadi, tampaknya mysqlclient jauh lebih cepat daripada pymysql
sumber
Meskipun beberapa dari Anda mungkin tandai ini sebagai duplikat dan mendapatkan marah bahwa saya menyalin jawaban orang lain, saya akan benar-benar seperti untuk menyoroti aspek respon Mr. Napik ini. Karena saya melewatkan ini, saya menyebabkan downtime situs web nasional (9 menit). Jika saja seseorang membagikan informasi ini, saya bisa mencegahnya!
Ini kodenya:
Yang penting di sini adalah klausa Coba dan Akhirnya . Ini memungkinkan koneksi ke SELALU ditutup, terlepas dari apa yang terjadi di bagian kursor / sqlstatement kode. Banyak koneksi aktif menyebabkan DBLoadNoCPU lonjakan dan dapat membuat server db lumpuh.
Saya harap peringatan ini membantu menyelamatkan server dan pada akhirnya pekerjaan! : D
sumber
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
pasang konektor menggunakan pip
pip install mysql-connector-python
atau Anda dapat mengunduh penginstal dari https://dev.mysql.com/downloads/connector/python/
Gunakan
connect()
metode python connector mysql untuk terhubung ke MySQL.pass argumen yang diperlukan untukconnect()
metode. yaitu Host, nama pengguna, kata sandi, dan nama basis data.Membuat
cursor
objek dari objek koneksi yang dikembalikan olehconnect()
metode untuk menjalankan query SQL.tutup koneksi setelah pekerjaan Anda selesai.
Contoh :
Referensi - https://pynative.com/python-mysql-database-connection/
API Penting dari Konektor Python MySQL
Untuk operasi DML - Gunakan
cursor.execute()
dancursor.executemany()
untuk menjalankan kueri. dan setelah ini gunakanconnection.commit()
untuk bertahan perubahan Anda ke DBUntuk mengambil data - Gunakan
cursor.execute()
untuk menjalankan query dancursor.fetchall()
,cursor.fetchone()
,cursor.fetchmany(SIZE)
untuk mengambil datasumber
Hanya modifikasi pada jawaban di atas. Cukup jalankan perintah ini untuk menginstal mysql untuk python
ingat! Ini sensitif huruf.
sumber
mysqlclient adalah yang terbaik karena yang lain hanya menyediakan dukungan untuk versi python tertentu
contoh kode
lihat https://github.com/PyMySQL/mysqlclient-python
sumber
mysql.connector
dan_mysql
berikan keduanya kesalahan impor (meskipun opsi kedua harus bekerja sesuai dengan dokumentasi).import MySQLdb
bekerja, dan kemudianMySQLdb.connect...
Lihat juga Storm . Ini adalah alat pemetaan SQL sederhana yang memungkinkan Anda untuk dengan mudah mengedit dan membuat entri SQL tanpa menulis kueri.
Ini adalah contoh sederhana:
Untuk menemukan dan menggunakan objek:
Temukan dengan kunci utama:
Untuk informasi lebih lanjut lihat tutorial .
sumber
Ini adalah koneksi Mysql DB
sumber
instal driver terlebih dahulu
Kemudian kode dasar seperti ini:
sumber
Anda dapat menghubungkan kode python Anda ke mysql dengan cara ini.
sumber
Pertama instal driver (Ubuntu)
sudo apt-get install python-pip
sudo pip install -U pip
sudo apt-get install python-dev libmysqlclient-dev
sudo apt-get install MySQL-python
Kode koneksi database MySQL
sumber
Untuk python 3.3
CyMySQL https://github.com/nakagami/CyMySQL
Saya telah menginstal pip pada windows 7 saya, cukup instal cymysql
(Anda tidak perlu cython) cepat dan tidak menyakitkan
sumber
Pertama, instal konektor python-mysql dari https://dev.mysql.com/downloads/connector/python/
pada konsol Python masukkan:
sumber