Wie kann ich mit einem Python-Programm eine Verbindung zu einer MySQL-Datenbank herstellen?
Können Sie bitte diese Frage beantworten? Sie bezieht sich auf mysql-connector
nur. stackoverflow.com/questions/59405740/
Wie kann ich mit einem Python-Programm eine Verbindung zu einer MySQL-Datenbank herstellen?
Versuchen Sie es mit MySQLdb . MySQLdb unterstützt nur Python 2.
Eine Anleitung dazu finden Sie hier: http://www.kitebird.com/articles/pydbapi.html
Von der Seite:
# 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 ()
Führen Sie diesen Befehl in Ihrem Terminal aus, um den mysql-Anschluss zu installieren:
pip install mysql-connector-python
Und führen Sie dies in Ihrem Python-Editor aus, um eine Verbindung zu MySQL herzustellen:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="username",
passwd="password",
database="database_name"
)
Beispiele für die Ausführung von MySQL-Befehlen (in Ihrem Python-Editor):
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
mycursor.execute("SHOW TABLES")
mycursor.execute("INSERT INTO customers (name, address) VALUES ('John', 'Highway 21')")
mydb.commit() # Use this command after insert, update, delete commands
Für weitere Befehle: https://www.w3schools.com/python/python_mysql_getstarted.asp
Können Sie bitte diese Frage beantworten? Sie bezieht sich auf mysql-connector
nur. stackoverflow.com/questions/59405740/
Verwenden Sie entweder mysqlclient o pymysql ( empfohlen ).
Wenn Sie mit einer älteren Version von Python arbeiten ( leider ), dann könnten Sie auch versuchen, -> unserql .
Bitte beachten Sie jedoch, dass das Projekt nicht mehr gepflegt wird und auch keine Fehlerkorrekturen mehr vorgenommen werden.
Als db-Treiber gibt es auch unserql . Einige der Gründe, die in diesem Link aufgeführt sind und die besagen, warum oursql besser ist:
- oursql verfügt über eine echte Parametrisierung und sendet SQL und Daten völlig getrennt an MySQL.
Sehr ähnlich zu 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]
El Lernprogramm in der Dokumentation ist ziemlich anständig.
Und natürlich ist SQLAlchemy für ORM eine gute Wahl, wie bereits in den anderen Antworten erwähnt.
Das Projekt wird nicht mehr gepflegt; die letzten Übertragungen in das Repository erfolgten 2016. Es funktioniert nicht mit Python 3.7 oder neuer und ist daher nicht mehr für alle derzeit unterstützten Python-Versionen verwendbar.
SQLAlchemy ist das Python-SQL-Toolkit und der Object Relational Mapper, der Anwendungsentwicklern die volle Leistungsfähigkeit und Flexibilität von SQL bietet. SQLAlchemy bietet eine vollständige Suite bekannter Enterprise-Level Persistenzmustern, die für einen effizienten und leistungsfähigen Datenbankzugriff, angepasst an eine einfache und pythonische Domänensprache.
pip install sqlalchemy
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()
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):
__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()
Der beste Weg, um eine Verbindung zu MySQL von Python aus herzustellen, ist die Verwendung von MySQL Connector/Python, weil es der offizielle Oracle-Treiber für MySQL ist, der mit Python arbeitet und sowohl mit Python 3 als auch mit Python 2 funktioniert.
Führen Sie die folgenden Schritte aus, um MySQL zu verbinden
Anschluss mit Pip installieren
pip install mysql-connector-python
oder Sie können das Installationsprogramm herunterladen von https://dev.mysql.com/downloads/connector/python/
Utilice connect()
Methode von mysql connector python, um sich mit MySQL zu verbinden. Übergeben Sie das erforderliche Argument an connect()
d.h. Host, Benutzername, Passwort und Datenbankname.
erstellen. cursor
Objekt aus dem Verbindungsobjekt, das von connect()
Methode zur Ausführung von SQL-Abfragen.
Schließen Sie die Verbindung nach Beendigung Ihrer Arbeit.
Beispiel :
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 ("You're 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()
Referenz - https://pynative.com/python-mysql-database-connection/
Wichtige API des MySQL Connectors Python
Für DML-Operationen - Verwenden Sie cursor.execute()
y cursor.executemany()
um die Abfrage zu starten. und danach verwenden Sie connection.commit()
um Ihre Änderungen in der DB beizubehalten
Zum Abrufen von Daten - Verwenden Sie cursor.execute()
um die Abfrage auszuführen und cursor.fetchall()
, cursor.fetchone()
, cursor.fetchmany(SIZE)
zum Abrufen von Daten
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
50 Stimmen
Die meisten Antworten hier konzentrieren sich auf die Installation der MySQLdb-Bibliothek. Ich würde wirklich empfehlen, sich für den von MySQL/Oracle bereitgestellten MySQL Connector/Python zu entscheiden, der den Prozess viel einfacher macht: stackoverflow.com/questions/372885/
10 Stimmen
Das Problem bei der Verwendung von Oracle's Connector/Python ist, dass es subtile Bugs und andere Integrationsprobleme gibt. Er ist einfach zu installieren, aber für alle realen Anwendungsfälle, für die ich ihn ausprobiert habe, fast unmöglich zum Laufen zu bringen. Aus diesem Grund empfehle ich immer MySQLdb.
8 Stimmen
@Mr.Napik Ich benutze
pymysql
weil es sich um ein reines freies Python handelt, das nach dieser Vergleich .