Die richtige Haltung für den Betrieb von MySQL in Python

巴扎黑
Freigeben: 2017-04-29 15:51:43
Original
1446 Leute haben es durchsucht

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.

Installieren

Einfacher Weg:

pip install pymysql
Nach dem Login kopieren

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
Nach dem Login kopieren

Importieren

import pymysql
Nach dem Login kopieren

Verbinden

def connect_wxremit_db():
    return pymysql.connect(host='10.123.5.28',
                           port=3306,
                           user='root',
                           password='root1234',
                           database='db_name',
                           charset='latin1')
Nach dem Login kopieren

Abfrage

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]
Nach dem Login kopieren

Einfach

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()
Nach dem Login kopieren

einfügen Stapeleinfügung

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()
Nach dem Login kopieren

Aktualisieren

    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()
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage