Heim > Artikel > Backend-Entwicklung > Die richtige Haltung für den Betrieb von MySQL in Python
Es gibt drei Hauptbibliotheken für die Verwendung von Python für MySQL: Python-MySQL (der bekanntere Name könnte MySQLdb sein), PyMySQL und SQLAlchemy.
Python-MySQL verfügt über die ältesten Qualifikationen. Der Kern ist in C-Sprache aufgebaut, die Benutzeroberfläche ist verfeinert und die Leistung ist am besten. Der Nachteil besteht darin, dass es in den letzten zwei Jahren nicht mehr aktualisiert wurde . Es unterstützt nur Python2 und nicht Python3.
PyMySQL wurde als Ersatz für Python-MySQL entwickelt. Die Schnittstelle ist mit Python-MySQL kompatibel, einfach zu installieren und unterstützt Python3.
SQLAlchemy ist ein ORM-Framework, das keine zugrunde liegenden Datenbankoperationen bereitstellt, sondern auf Bibliotheken von Drittanbietern wie MySQLdb und PyMySQL basiert. Derzeit wird SQLAlchemy häufig im Bereich der Webprogrammierung verwendet.
In diesem Artikel wird hauptsächlich die korrekte Verwendung von PyMySQL vorgestellt. Die Beispielcodes stammen alle aus tatsächlichen Projekten.
Einfacher Weg:
pip install pymysql
Wenn Sie keine Verbindung zum Internet herstellen können, müssen Sie es offline installieren, zum Beispiel:
pip install pymysql-x.x.x.tar.gz
import pymysql
def connect_wxremit_db(): return pymysql.connect(host='10.123.5.28', port=3306, user='root', password='root1234', database='db_name', charset='latin1')
def query_country_name(cc2): sql_str = ("SELECT Fcountry_name_zh" + " FROM t_country_code" + " WHERE Fcountry_2code='%s'" % (cc2)) logging.info(sql_str) con = mysql_api.connect_wxremit_db() cur = con.cursor() cur.execute(sql_str) rows = cur.fetchall() cur.close() con.close() assert len(rows) == 1, 'Fatal error: country_code does not exists!' return rows[0][0]
def insert_file_rec(self, file_name, file_md5): con = mysql_api.connect_wxremit_db() cur = con.cursor() try: sql_str = ("INSERT INTO t_forward_file (Ffile_name, Ffile_md5)", + " VALUES ('%s', '%s')" % (file_name, file_md5)) cur.execute(sql_str) con.commit() except: con.rollback() logging.exception('Insert operation error') raise finally: cur.close() con.close()
remit_ids = [('1234', 'CAD'), ('5678', 'HKD')] con = mysql_api.connect_wxremit_db() cur = con.cursor() try: cur.executemany("INSERT INTO t_order (Fremit_id, Fcur_type, Fcreate_time" + " VALUES (%s, %s, now())", new_items) assert cur.rowcount == len(remit_ids), 'my error message' con.commit() except Exception as e: con.rollback() logging.exception('Insert operation error') finally: cur.close() con.close()
def update_refund_trans(self, remit_id): con = mysql_api.connect_wxremit_db() cur = con.cursor() try: sql_str = ("SELECT Fremit_id" + " FROM t_wxrefund_trans" + " WHERE Fremit_id='%s'" % remit_id + " FOR UPDATE") logging.info(sql_str) cur.execute(sql_str) assert cur.rowcount == 1, 'Fatal error: The wx-refund record be deleted!' sql_str = ("UPDATE t_wxrefund_trans" + " SET Fcheck_amount_flag=1" + ", Fmodify_time=now()" + " WHERE Fremit_id='%s'" % remit_id logging.info(sql_str) cur.execute(sql_str) assert cur.rowcount == 1, 'The number of affected rows not equal to 1' con.commit() except: con.rollback() logging.exception('Update operation error') raise finally: cur.close() con.close()
PyMySQL ist ziemlich ausgereift und wie Python-MySQL eine optionale Installationskomponente in vielen Linux-Distributionen.
Das obige ist der detaillierte Inhalt vonDie richtige Haltung für den Betrieb von MySQL in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!