Heim >Datenbank >MySQL-Tutorial >pymysql betreibt die Datenbank
1. Einführung
Pymsql ist ein Modul in Python, das MySQL betreibt. Seine Verwendung ist fast die gleiche wie MySQLdb, aber derzeit unterstützt pymysql python3.x und letzteres unterstützt nicht Version 3.x >
Die Ausführungsanweisung ähnelt dem SQL-Quellcode 2. Verwenden Sie pip install pymysql2 Operation Beginnen wir mit einer vollständigen Verbindung plus GrundoperationenFügen Sie Daten in die Datenbank ein, verwenden Sie die try-Anweisung und führen Sie ein aktives Rollback durch, wenn eine Ausnahme auftritt
import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 创建游标 cursor = conn.cursor() # 执行SQL,并返回收影响行数 effect_row = cursor.execute("update hosts set host = '1.1.1.2'") # 执行SQL,并返回受影响行数 #effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,)) # 执行SQL,并返回受影响行数 #effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)]) # 提交,不然无法保存新建或者修改的数据 conn.commit() # 关闭游标 cursor.close() # 关闭连接 conn.close()
3. Fügen Sie Daten in die Datentabelle ein. Um mehrere Datenelemente einzufügen, verwenden Sie die Methode „executemany“, um mehrere Datenelemente in die Produktionsumgebung einzufügen. Übergeben Sie nach dem Abrufen der Daten die Anweisung ([('v1 ','v2'),('v3',' v4')])
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close()
# Holen Sie sich die neueste selbstinkrementierte ID
# 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 创建游标 cur = conn.cursor() if request.method == "POST": title = request.POST.get("title") title_en = request.POST.get("title_en") content = request.POST.get("content") content_en = request.POST.get("content_en") notification_type =request.POST.get("notification_type").strip() user_list = request.POST.get("user_list") updated_datetime = datetime.now() created_datetime = datetime.now() values_list = [] for user in user_id_list: temp = updated_datetime,created_datetime,title,title_en,content,content_en,notification_type,user['id'] values_list.append((temp)) try: cur.executemany('''insert into app_notification(updated_datetime, created_datetime, title, title_en, content, content_en, notification_type, is_read, recipient_id) values(%s, %s, %s, %s, %s, %s, %s, 0, %s)''',values_list) conn.commit() conn.close() except Exception as err: conn.rollback() logging.error(err) logging.error(traceback.format_exc()) conn.close()new_id = Cursor.lastrowid4. DatenbankabfragevorgangPython-Abfrage Mysql verwendet die Methode fetchone(), um ein einzelnes Datenelement abzurufen, und die Methode fetchall(), um mehrere Datenelemente abzurufen. fetchone(): Diese Methode ruft den nächsten Abfrageergebnissatz ab. Die Ergebnismenge ist ein Objekt fetchall(): empfängt alle zurückgegebenen Ergebniszeilen rowcount: Dies ist eine schreibgeschützte Eigenschaft und gibt die Anzahl der betroffenen Zeilen nach der Ausführung vonexecute( zurück. ) Methode.
Hinweis: Gehen Sie beim Abrufen von Daten der Reihe nach vor. Sie können Cursor.scroll(num,mode) verwenden, um die Cursorposition zu verschieben, wie zum Beispiel:
import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') cursor = conn.cursor() cursor.execute("select * from hosts") # 获取第一行数据 row_1 = cursor.fetchone() # 获取前n行数据 # row_2 = cursor.fetchmany(3) # 获取所有数据 # row_3 = cursor.fetchall() conn.commit() cursor.close() conn.close()cursor.scroll(1 ,mode= 'relative') # Relativ zur aktuellen Position verschieben cursor.scroll(2,mode='absolute') # Relativ zur absoluten Position verschieben 5. Datentyp abrufen Bei den erhaltenen Standarddaten handelt es sich um den Vorfahrentyp, wenn Sie möchten, oder um Daten vom Wörterbuchtyp, d. h.:
Fehlerbehandlung
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 游标设置为字典类型 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) r = cursor.execute("call p1()") result = cursor.fetchone() conn.commit() cursor.close() conn.close()in DB definiert API Es gibt einige Datenbankbetriebsfehler und Ausnahmen. Die folgende Tabelle listet diese Fehler und Ausnahmen auf: