Heim  >  Artikel  >  Datenbank  >  pymysql betreibt die Datenbank

pymysql betreibt die Datenbank

高洛峰
高洛峰Original
2016-12-02 16:44:561273Durchsuche

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 pymysql

2 Operation

Beginnen wir mit einer vollständigen Verbindung plus Grundoperationen

Fü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.lastrowid

4. Datenbankabfragevorgang

Python-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:

Stellungnahme:
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