Большинство ответов здесь сосредоточены на установке библиотеки MySQLdb. Я бы действительно предложил выбрать MySQL Connector / Python, предоставляемый MySQL / Oracle, что значительно упрощает процесс: stackoverflow.com/questions/372885/…
Mr. Napik
8
Проблема с использованием Oracle Connector / Python заключается в том, что у него есть небольшие ошибки и другие проблемы интеграции. Его легко установить, но практически невозможно заставить работать для всех реальных сценариев использования, для которых я его пробовал. Поэтому я всегда рекомендую MySQLdb.
Джо С.
7
@ Mr.Napik Я использую, pymysqlпотому что это чистый бесплатный Python в соответствии с этим сравнением .
Сис Тиммерман
Ответы:
1246
Подключение к MYSQL с Python 2 в три этапа
1 - Настройка
Вы должны установить драйвер MySQL, прежде чем делать что-либо. В отличие от PHP, только драйвер SQLite по умолчанию устанавливается вместе с Python. Наиболее используемый пакет для этого - MySQLdb, но его трудно установить с помощью easy_install. Обратите внимание, что MySQLdb поддерживает только Python 2.
Для Linux это случайный пакет (python-mysqldb). (Вы можете использовать sudo apt-get install python-mysqldb(для дистрибутивов на основе Debian), yum install MySQL-python(для основанных на rpm) или dnf install python-mysql(для современных дистрибутивов Fedora) в командной строке для загрузки.)
После установки перезагрузите компьютер. Это не обязательно, но это не позволит мне ответить на 3 или 4 других вопроса в этом посте, если что-то пойдет не так. Поэтому, пожалуйста, перезагрузитесь.
Тогда это похоже на использование любого другого пакета:
#!/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()
Конечно, есть тысячи возможностей и вариантов; это очень простой пример. Вам придется посмотреть на документацию. Хорошая отправная точка .
3 - Более продвинутое использование
Как только вы узнаете, как это работает, вы можете использовать ORM, чтобы избежать написания SQL вручную и манипулировать вашими таблицами, как они были объектами Python. Самым известным ORM в сообществе Python является SQLAlchemy .
Я настоятельно советую вам использовать его: ваша жизнь будет намного проще.
Недавно я обнаружил еще одну драгоценность в мире Python: peewee . Это очень легкий ORM, его очень легко и быстро настроить, а затем использовать. Это делает мой день для небольших проектов или автономных приложений, где использование больших инструментов, таких как SQLAlchemy или Django, излишне:
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
Этот пример работает из коробки. Ничего кроме наличия peewee ( pip install peewee) не требуется.
Рад, что ты любишь peeeee !! Я добавил поддержку MySQL, а также некоторую документацию по интеграции с ним. Удачного взлома!
Колейфер
14
Обратите внимание, что на момент написания этой статьи MySQLdb не поддерживает Python 3. На странице sourceforge написано «Поддержка Python 3 появится в ближайшее время», но она не обновлялась с 2012-10-08. Для Python 3 есть PyMySQL и oursql .
Пол
8
Также обратите внимание, что требуется следующее:pip install MySQL-python
Бен Кроухерст
5
Этот ответ был бы более полезен для примера подключения к внешнему серверу через нестандартный порт, чтобы показать, как это сделать. Сказать, что localhost - это обычный способ, это чепуха.
Энтони
3
Peewee изменил поведение по умолчанию и больше не использует автокоммит по умолчанию. Даже ситуация с драйвером БД изменилась. Вопрос нуждается в обновлении, но, поскольку некоторые из моих ответов злоупотребляют правками, я их больше не редактирую.
е-удовлетворяться
189
Вот один из способов сделать это, используя MySQLdb , который поддерживает только 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()
есть ли необходимость в коммите в этом примере, так как вы не изменяете базу данных?
sumanth232
3
ВНИМАНИЕ - у этого модуля нет поддержки часового пояса при подключении
kommradHomer
Это не работает на моем общем хостинге. Сказать это No module named MySQLdb. Как я могу использовать MySQL с Python на виртуальном хостинге. Любая альтернатива?
Бхавеш Гангани
@BhaveshGangani вам нужно связаться с вашим хостом и спросить, почему библиотеки Python они поддерживают. Если они поддерживают pypi, вы всегда можете загрузить пакет, когда произойдет развертывание.
Джордж Стокер
1
Интересно, что хотя в документах говорится, что это работает только с python 2, мне кажется, что он работает с python 3
lucidbrot
122
Oracle (MySQL) теперь поддерживает чистый соединитель Python. Это означает, что не нужно устанавливать двоичные файлы: это всего лишь библиотека Python. Это называется "Connector / Python".
Да, это так. Кроме того, это меньше хлопот, чем MySQLdb, и API, на мой взгляд, лучше. Это должно быть ответом.
Энтони
1
использование официального коннектора mysql для python - лучший способ выиграть время
Anas
2
@ J0hnG4lt Вы можете просто нажать «Нет, спасибо, просто начните мою загрузку» под формой входа (что на самом деле кажется обязательным, но не обязательным).
ComFreek
6
@ComFreek отлично. Чем это лучше? Можем ли мы перестать применять «рабочий процесс Windows». Управление пакетами существует.
Это один пакет (около 110 тыс.), Чистый Python, поэтому он не зависит от системы и прост в установке. Вы просто скачиваете, дважды кликаете, подтверждаете лицензионное соглашение и идете. Нет необходимости в Xcode, MacPorts, компиляции, перезапуске…
Затем вы подключаетесь как:
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()
Не так просто, как вы утверждаете. Когда я попытался установить rpm, я получил несколько проблем с зависимостями (FileDigests и PayloadIsXz) из моего RPM: 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
Раньше я предпочитал эту библиотеку, но она официально не поддерживается в PyPi. С тех пор я перешел на MySQLdb.
Стивен Меркатанте
2
@Arms: официально не поддерживается PyPi? Есть ли у вас источник для этого?
Месса
7
pip install mysql-connector-pythonтоже будет работать. Я не вижу, где написано, что больше не поддерживается PyPi? Прекрасно, если у вас нет доступа к компиляторам gcc / C в вашей системе, и, следовательно, вы не можете установить mysqldb.
Decvalts
7
по состоянию на 7 ноября 2016 года пакет для pip был просто mysql-connector, pip search mysql-connectorчтобы найти имя пакета. ответ здесь: stackoverflow.com/a/22829966/2048266
nommer
117
Прекратите использование MySQLDb, если вы хотите избежать установки заголовков mysql просто для доступа к mysql из python.
Используйте pymysql . Он делает все то, что делает MySQLDb, но он был реализован исключительно на Python без внешних зависимостей . Это делает процесс установки во всех операционных системах единообразным и простым. pymysqlкапля замены для MySQLDb и IMHO нет никаких причин когда-либо использовать MySQLDb для чего-либо ... КОГДА-ЛИБО! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, но это только я.
Установка
pip install pymysql
Вот и все ... вы готовы играть.
Пример использования из репозитория pymysql 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,('webmaster@python.org','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,('webmaster@python.org',))
result = cursor.fetchone()print(result)finally:
connection.close()
ТАКЖЕ - Заменить MySQLdb в существующем коде быстро и прозрачно
Если у вас есть код, использующий MySQLdb, вы можете легко заменить его на pymysql, используя этот простой процесс:
# import MySQLdb << Remove this line and replace with:import pymysql
pymysql.install_as_MySQLdb()
Все последующие ссылки на MySQLdb будут использовать pymysql прозрачно.
«Всегда» немного сильно ... Что не так с peewee или sqlalchemy? Даже если они существуют в виде библиотек ORM, они все равно так же полезны
OneCricketeer
4
Нет, я не думаю, что это сильно. Учитывая возможность использования MySQLDb или PyMysql, я думаю, что выбор PyMysql не представляет никакой сложности, потому что это простая установка pip без каких-либо зависимостей, в то время как MySQLDb требует, чтобы для вашей платформы ОС были установлены заголовочные файлы разработки mysql. Sqlalchemy не учитывает это, потому что ему все еще нужно обернуть модуль, который может общаться с mysql, такой как PyMysql, MySQLDb, CyMySQL и т. Д. Peewee выглядит интересно, но я это проверю
OkezieE
2
@ cricket_007 peewee и sqlalchemly не реализуют свои собственные коннекторы БД, они предоставляют уровень выше MySQLdb и т. д.
rockportrocker
25
Попробуйте использовать MySQLdb . MySQLdb поддерживает только Python 2.
ВНИМАНИЕ - у этого модуля нет поддержки часового пояса при подключении
kommradHomer
1
@kommradHomer Можете ли вы уточнить, пожалуйста?
Пидерман
1
@kommradHomer - какое значение имеет поддержка часовых поясов для вас (или для других - особенно при подключении localhost)?
Уоррен
1
@ warren нет, я не подключал localhost в моем случае
kommradHomer
1
Как определить, какая библиотека установлена для подключения к базе данных?
posfan12
18
В качестве драйвера БД есть также наша SQL . Некоторые из причин, перечисленных в этой ссылке, объясняют, почему oursql лучше:
oursql имеет реальную параметризацию, отправляя SQL и данные в MySQL совершенно отдельно.
oursql позволяет передавать текстовые или двоичные данные в базу данных и выводить их из базы данных, вместо того чтобы требовать буферизации всего в клиенте.
oursql может как вставлять строки лениво, так и лениво извлекать строки.
Oursql по умолчанию поддерживает Unicode.
oursql поддерживает Python с 2.4 по 2.7 без предупреждений об устаревании в версии 2.6+ (см. PEP 218) и без ошибок в версии 2.7 (см. PEP 328).
oursql изначально работает на python 3.x.
Так как же подключиться к mysql с oursql?
Очень похоже на 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]
Я не понимаю, «работает на Python 3.x изначально». Я просто попытался установить его, и setup.py разбомбил, потому что он даже не использует Python 3-совместимые вызовы для печати. Звучало здорово, пока я не попробовал.
otakucode
15
Выполните эту команду в своем терминале, чтобы установить соединитель mysql:
pip install mysql-connector-python
И запустите это в вашем редакторе Python для подключения к MySQL:
Некоторые ребята уже ответили на ваш вопрос. Вы просто забыли запустить mydb.commit()после вставки значений в таблицу
Sherzod
13
SQLAlchemy
SQLAlchemy - это набор инструментов Python SQL и Object Relational Mapper, который предоставляет разработчикам приложений полную мощь и гибкость SQL. SQLAlchemy предоставляет полный набор хорошо известных шаблонов персистентности корпоративного уровня, предназначенных для эффективного и высокопроизводительного доступа к базе данных, адаптированных к простому языку домена Pythonic.
Установка
pip install sqlalchemy
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()
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()
Несмотря на все приведенные выше ответы, в случае, если вы не хотите подключаться к конкретной базе данных заранее, например, если вы хотите создать базу данных еще (!), Вы можете использовать ее connection.select_db(database), как показано ниже.
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 - это простой способ. Вы можете выполнять SQL-запросы через соединение. Период.
Мой предпочтительный способ, который также является pythonic, состоит в том, чтобы использовать могущественную SQLAlchemy вместо этого. Вот учебник, связанный с запросами , и учебник о возможностях ORM в SQLALchemy.
Даже если некоторые из вас могут пометить это как дубликат и расстроиться, что я копирую чужой ответ, я ДЕЙСТВИТЕЛЬНО хотел бы выделить аспект ответа мистера Напика. Поскольку я пропустил это, я вызвал общенациональный простой веб-сайта (9 минут). Если бы только кто-то поделился этой информацией, я мог бы предотвратить это!
Вот его код:
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()
Важной вещью здесь является предложение « Попробуй и наконец» . Это позволяет подключаться к ВСЕГДА закрывать независимо от того, что происходит в части курсора / sqlstatement кода. Большое количество активных соединений приводит к скачкам DBLoadNoCPU и может привести к сбою сервера БД.
Я надеюсь, что это предупреждение поможет сохранить серверы и, в конечном итоге, рабочие места! : D
Лучший способ подключения к MySQL из python - это использование MySQL Connector / Python, потому что это официальный драйвер Oracle для MySQL для работы с Python и он работает как с Python 3, так и с Python 2.
выполните шаги, указанные ниже, чтобы подключить MySQL
Используйте connect()метод MySQL соединителя Python для подключения к MySQL.pass требуемый аргумент connect()метода. т.е. хост, имя пользователя, пароль и имя базы данных.
Создать cursorобъект из объекта подключения, возвращенного connect()методом для выполнения SQL-запросов.
закройте соединение после завершения вашей работы.
Пример :
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()
Для операций DML - используйте cursor.execute()и cursor.executemany()для выполнения запроса. и после этого использовать, connection.commit()чтобы сохранить ваши изменения в БД
Для получения данных - Используйте cursor.execute()для выполнения запроса и cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE)чтобы получить данные
Я установил MySQL-python через yum install. Установка была завершена, но я не могу импортировать модуль MySQLdb. Там нет такого модуля. Есть идеи, почему это так?
user3527975
Непонятно, какой ответ вы имеете в виду, когда говорите «ответ выше». Пожалуйста, сделайте ваш ответ сам по себе. Если вы хотите сослаться на другие ответы, пожалуйста, дайте ссылку на конкретный ответ.
Flimm
5
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())
+1 за предложение самого быстрого решения для python 3. Тем не менее, mysql.connectorи _mysqlдать оба ошибки импорта (хотя второй вариант должен работать в соответствии с документацией). import MySQLdbработы, а затемMySQLdb.connect...
Suzana
3
Также взгляните на Шторм . Это простой инструмент отображения SQL, который позволяет легко редактировать и создавать записи SQL без написания запросов.
Вот простой пример:
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
Чтобы найти и использовать объект:
michael = store.find(User,User.name == u"Michael").one()print str(user.ID)# 10
Найти с первичным ключом:
print store.get(User,1).name #Mark
Для получения дополнительной информации см. Учебник .
#!/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
Вопрос был слишком широким, но этот ответ кажется слишком узким (по крайней мере, в том смысле, что установка и импорт одного модуля не сработает). Также кажется, что оболочка и питон смешаны в одном блоке кода без каких-либо объяснений или подсказок относительно того, что происходит, где и что делает.
pymysql
потому что это чистый бесплатный Python в соответствии с этим сравнением .Ответы:
Подключение к MYSQL с Python 2 в три этапа
1 - Настройка
Вы должны установить драйвер MySQL, прежде чем делать что-либо. В отличие от PHP, только драйвер SQLite по умолчанию устанавливается вместе с Python. Наиболее используемый пакет для этого - MySQLdb, но его трудно установить с помощью easy_install. Обратите внимание, что MySQLdb поддерживает только Python 2.
Для пользователя Windows вы можете получить исполняемый файл MySQLdb .
Для Linux это случайный пакет (python-mysqldb). (Вы можете использовать
sudo apt-get install python-mysqldb
(для дистрибутивов на основе Debian),yum install MySQL-python
(для основанных на rpm) илиdnf install python-mysql
(для современных дистрибутивов Fedora) в командной строке для загрузки.)Для Mac вы можете установить MySQLdb, используя Macport .
2 - Использование
После установки перезагрузите компьютер. Это не обязательно, но это не позволит мне ответить на 3 или 4 других вопроса в этом посте, если что-то пойдет не так. Поэтому, пожалуйста, перезагрузитесь.
Тогда это похоже на использование любого другого пакета:
Конечно, есть тысячи возможностей и вариантов; это очень простой пример. Вам придется посмотреть на документацию. Хорошая отправная точка .
3 - Более продвинутое использование
Как только вы узнаете, как это работает, вы можете использовать ORM, чтобы избежать написания SQL вручную и манипулировать вашими таблицами, как они были объектами Python. Самым известным ORM в сообществе Python является SQLAlchemy .
Я настоятельно советую вам использовать его: ваша жизнь будет намного проще.
Недавно я обнаружил еще одну драгоценность в мире Python: peewee . Это очень легкий ORM, его очень легко и быстро настроить, а затем использовать. Это делает мой день для небольших проектов или автономных приложений, где использование больших инструментов, таких как SQLAlchemy или Django, излишне:
Этот пример работает из коробки. Ничего кроме наличия peewee (
pip install peewee
) не требуется.источник
pip install MySQL-python
Вот один из способов сделать это, используя MySQLdb , который поддерживает только Python 2:
Ссылка здесь
источник
No module named MySQLdb
. Как я могу использовать MySQL с Python на виртуальном хостинге. Любая альтернатива?Oracle (MySQL) теперь поддерживает чистый соединитель Python. Это означает, что не нужно устанавливать двоичные файлы: это всего лишь библиотека Python. Это называется "Connector / Python".
http://dev.mysql.com/downloads/connector/python/
источник
Если вам не нужен MySQLdb, но вы бы приняли любую библиотеку, я бы очень, очень рекомендовал MySQL Connector / Python от MySQL: http://dev.mysql.com/downloads/connector/python/ .
Это один пакет (около 110 тыс.), Чистый Python, поэтому он не зависит от системы и прост в установке. Вы просто скачиваете, дважды кликаете, подтверждаете лицензионное соглашение и идете. Нет необходимости в Xcode, MacPorts, компиляции, перезапуске…
Затем вы подключаетесь как:
источник
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
тоже будет работать. Я не вижу, где написано, что больше не поддерживается PyPi? Прекрасно, если у вас нет доступа к компиляторам gcc / C в вашей системе, и, следовательно, вы не можете установитьmysqldb
.pip search mysql-connector
чтобы найти имя пакета. ответ здесь: stackoverflow.com/a/22829966/2048266Используйте pymysql . Он делает все то, что делает MySQLDb, но он был реализован исключительно на Python без внешних зависимостей . Это делает процесс установки во всех операционных системах единообразным и простым.
pymysql
капля замены для MySQLDb и IMHO нет никаких причин когда-либо использовать MySQLDb для чего-либо ... КОГДА-ЛИБО! -PTSD from installing MySQLDb on Mac OSX and *Nix systems
, но это только я.Установка
pip install pymysql
Пример использования из репозитория pymysql Github
Если у вас есть код, использующий MySQLdb, вы можете легко заменить его на pymysql, используя этот простой процесс:
Все последующие ссылки на MySQLdb будут использовать pymysql прозрачно.
источник
Попробуйте использовать MySQLdb . MySQLdb поддерживает только Python 2.
Здесь есть страница с инструкциями: http://www.kitebird.com/articles/pydbapi.html
Со страницы:
источник
localhost
)?В качестве драйвера БД есть также наша SQL . Некоторые из причин, перечисленных в этой ссылке, объясняют, почему oursql лучше:
Так как же подключиться к mysql с oursql?
Очень похоже на mysqldb:
Учебник в документации довольно прилично.
И, конечно, для ORM SQLAlchemy является хорошим выбором, как уже упоминалось в других ответах.
источник
Выполните эту команду в своем терминале, чтобы установить соединитель mysql:
И запустите это в вашем редакторе Python для подключения к MySQL:
Примеры для выполнения команд MySQL (в вашем языке Python):
Для дополнительных команд: https://www.w3schools.com/python/python_mysql_getstarted.asp
источник
mysql-connector
только с. stackoverflow.com/questions/59405740/…mydb.commit()
после вставки значений в таблицуSQLAlchemy
Установка
RAW запрос
ORM способ
источник
Несмотря на все приведенные выше ответы, в случае, если вы не хотите подключаться к конкретной базе данных заранее, например, если вы хотите создать базу данных еще (!), Вы можете использовать ее
connection.select_db(database)
, как показано ниже.источник
MySQLdb - это простой способ. Вы можете выполнять SQL-запросы через соединение. Период.
Мой предпочтительный способ, который также является pythonic, состоит в том, чтобы использовать могущественную SQLAlchemy вместо этого. Вот учебник, связанный с запросами , и учебник о возможностях ORM в SQLALchemy.
источник
для Python3.6 я нашел два драйвера: pymysql и mysqlclient. Я проверил производительность между ними и получил результат: mysqlclient работает быстрее.
ниже мой тестовый процесс (необходимо установить python lib profilehooks для анализа прошедшего времени:
сырой sql:
select * from FOO;
немедленно выполнить в терминале mysql:
46410 rows in set (0.10 sec)
Pymysql (2,4 с):
вот профиль pymysql:
mysqlclient (0.4с)
вот профиль mysqlclient:
Итак, похоже, что mysqlclient намного быстрее, чем pymysql
источник
Даже если некоторые из вас могут пометить это как дубликат и расстроиться, что я копирую чужой ответ, я ДЕЙСТВИТЕЛЬНО хотел бы выделить аспект ответа мистера Напика. Поскольку я пропустил это, я вызвал общенациональный простой веб-сайта (9 минут). Если бы только кто-то поделился этой информацией, я мог бы предотвратить это!
Вот его код:
Важной вещью здесь является предложение « Попробуй и наконец» . Это позволяет подключаться к ВСЕГДА закрывать независимо от того, что происходит в части курсора / sqlstatement кода. Большое количество активных соединений приводит к скачкам DBLoadNoCPU и может привести к сбою сервера БД.
Я надеюсь, что это предупреждение поможет сохранить серверы и, в конечном итоге, рабочие места! : D
источник
Лучший способ подключения к MySQL из python - это использование MySQL Connector / Python, потому что это официальный драйвер Oracle для MySQL для работы с Python и он работает как с Python 3, так и с Python 2.
выполните шаги, указанные ниже, чтобы подключить MySQL
установить разъем с помощью пипса
pip install mysql-connector-python
или вы можете скачать установщик с https://dev.mysql.com/downloads/connector/python/
Используйте
connect()
метод MySQL соединителя Python для подключения к MySQL.pass требуемый аргументconnect()
метода. т.е. хост, имя пользователя, пароль и имя базы данных.Создать
cursor
объект из объекта подключения, возвращенногоconnect()
методом для выполнения SQL-запросов.закройте соединение после завершения вашей работы.
Пример :
Ссылка - 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)
чтобы получить данныеисточник
Просто модификация в ответе выше. Просто запустите эту команду, чтобы установить MySQL для Python
Помните! Это чувствительно к регистру.
источник
mysqlclient является лучшим, так как другие обеспечивают поддержку только определенных версий Python
пример кода
см. https://github.com/PyMySQL/mysqlclient-python
источник
mysql.connector
и_mysql
дать оба ошибки импорта (хотя второй вариант должен работать в соответствии с документацией).import MySQLdb
работы, а затемMySQLdb.connect...
Также взгляните на Шторм . Это простой инструмент отображения SQL, который позволяет легко редактировать и создавать записи SQL без написания запросов.
Вот простой пример:
Чтобы найти и использовать объект:
Найти с первичным ключом:
Для получения дополнительной информации см. Учебник .
источник
Это Mysql соединение с БД
источник
сначала установите драйвер
Тогда основной код выглядит так:
источник
Вы можете подключить свой код Python к MySQL таким образом.
источник
Сначала установите драйвер (Ubuntu)
sudo apt-get установить python-pip
Установка sudo pip -U pip
sudo apt-get установить python-dev libmysqlclient-dev
sudo apt-get установить MySQL-python
Коды подключения к базе данных MySQL
источник
Для питона 3.3
CyMySQL https://github.com/nakagami/CyMySQL
У меня на Windows 7 установлен pip, просто установите pip cymysql
(вам не нужен Cython) быстро и безболезненно
источник
Сначала установите Python-MySQL соединитель с https://dev.mysql.com/downloads/connector/python/
на консоли Python введите:
источник