Как мне подключиться к базе данных MySQL на Python? - PullRequest
1071 голосов
/ 17 декабря 2008

Как мне подключиться к базе данных MySQL с помощью программы на Python?

Ответы [ 21 ]

5 голосов
/ 18 августа 2018

для Python3.6 Я нашел два драйвера: pymysql и mysqlclient. Я проверил производительность между ними и получил результат: mysqlclient работает быстрее.

ниже - мой тестовый процесс (нужно проанализировать python lib profilehooks для анализа прошедшего времени:

сырой sql: select * from FOO;

немедленно выполнить в терминале mysql: 46410 rows in set (0.10 sec)

pymysql (2,4 с):

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()

вот профиль pymysql: enter image description here


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()

вот профиль mysqlclient: enter image description here

Итак, похоже, что mysqlclient намного быстрее, чем pymysql

5 голосов
/ 21 сентября 2015

Просто модификация в ответе выше. Просто запустите эту команду, чтобы установить mysql для python

sudo yum install MySQL-python
sudo apt-get install MySQL-python

помнить! Он чувствителен к регистру.

4 голосов
/ 04 августа 2018

Лучший способ подключиться к MySQL из python - это использовать MySQL Connector / Python, потому что это официальный драйвер Oracle для MySQL для работы с Python и он работает как с Python 3, так и с Python 2.

выполните шаги, указанные ниже, для подключения MySQL

  1. установка соединителя с помощью пипа

    pip install mysql-connector-python

или вы можете загрузить установщик с https://dev.mysql.com/downloads/connector/python/

  1. Используйте connect() метод Python соединителя mysql для подключения к MySQL.pass требуемый аргумент для метода connect(). то есть хост, имя пользователя, пароль и имя базы данных.

  2. Создание cursor объекта из объекта подключения, возвращенного методом connect() для выполнения SQL-запросов.

  3. закрыть соединение после завершения работы.

Пример

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()

Ссылка - https://pynative.com/python-mysql-database-connection/

Важный API MySQL Connector Python

  • Для операций DML - используйте cursor.execute() и cursor.executemany() для запуска запроса. и после этого используйте connection.commit(), чтобы сохранить ваши изменения в БД

  • Для извлечения данных - используйте cursor.execute() для запуска запроса и cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE) для извлечения данных

3 голосов
/ 28 января 2018

mysqlclient является лучшим, так как другие обеспечивают поддержку только определенных версий python

 pip install mysqlclient

пример кода

    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())

см. https://github.com/PyMySQL/mysqlclient-python

3 голосов
/ 03 июня 2015

Также взгляните на Шторм . Это простой инструмент отображения SQL, который позволяет легко редактировать и создавать записи SQL без написания запросов.

Вот простой пример:

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: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_INCREMENT

print str(user.ID) # 1 (ID)

store.commit() # commit all changes to the database

Для поиска и использования объекта:

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

Найти с помощью первичного ключа:

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

Для получения дополнительной информации см. Учебник .

1 голос
/ 19 января 2019

Это соединение 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 __name__ == '__main__':
    app.run()
1 голос
/ 14 июля 2018

вы можете подключить свой код Python к MySQL таким образом.

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

cursor = db.cursor()
1 голос
/ 21 августа 2017

сначала установите драйвер

pip install MySQL-python   

Тогда основной код выглядит так:

#!/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 
0 голосов
/ 01 августа 2018

Сначала установите драйвер (Ubuntu)

  • sudo apt-get install python-pip

  • установка sudo pip -U pip

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

  • sudo apt-get install MySQL-python

Коды подключения к базе данных 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 ()
0 голосов
/ 08 июня 2018

Сначала установите соединитель python-mysql из https://dev.mysql.com/downloads/connector/python/

в консоли Python введите:

pip install mysql-connector-python-rf
import mysql.connector
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...