Heim >Backend-Entwicklung >Python-Tutorial >Python-Datenbankprogrammierung
Erklären Sie am Beispiel der MySQL-Datenbank, wie Python eine Datenbank betreibt und einfache Hinzufügungen, Löschungen, Änderungen und Suchvorgänge durchführt.
Das MySQL-Datenbankbetriebsmodul von Python heißt MySQLdb und erfordert eine zusätzliche Installation.
Installation über das Pip-Tool: pip install MySQLdb
MySQLdb-Modul verwenden wir hauptsächlich die Methode zum Herstellen einer Verbindung zur Datenbank MySQLdb.Connect() Nach dem Herstellen einer Verbindung zur Datenbank verwenden wir einige Methoden Führen Sie den entsprechenden Vorgang aus.
Die Methode MySQLdb.Connect(parameters...) stellt die folgenden häufig verwendeten Parameter bereit:
Die vom Verbindungsobjekt zurückgegebene Funktion connect():
Das Cursorobjekt bietet auch mehrere Methoden:
13.1 Hinzufügen, Löschen, Ändern und Abfragen der Datenbank
13.1.1 Erstellen Sie eine Benutzertabelle in der Testbibliothek und fügen Sie einen Datensatz hinzu
>>> conn = MySQLdb.Connect(host='192.168.1.244',user='root',passwd='QHyCTajI',db='test',charset='utf8') >>> cursor = conn.cursor() >>> sql = "create table user(id int,name varchar(30),password varchar(30))" >>> cursor.execute(sql) # 返回的数字是影响的行数 0L >>> sql = "insert into user(id,name,password) values('1','xiaoming','123456')" >>> cursor.execute(sql) 1L >>> conn.commit() # 提交事务,写入到数据库 >>> cursor.execute('show tables') # 查看创建的表 1L >>> cursor.fetchall() # 返回上一个游标执行的所有结果,默认是以元组形式返回 ((u'user',),) >>> cursor.execute('select * from user') 1L >>> cursor.fetchall() ((1L, u'xiaoming', u'123456'),)
13.1.2 Fügen Sie mehrere Datenelemente ein
>>> sql = 'insert into user(id,name,password) values(%s,%s,%s)' >>> args = [('2','zhangsan','123456'), ('3','lisi','123456'),('4','wangwu','123456')] >>> cursor.executemany(sql, args) 3L >>> conn.commit() >>> sql = 'select * from user' >>> cursor.execute(sql) 4L >>> cursor.fetchall() ((1L, u'xiaoming', u'123456'), (2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))
Die Variable args ist eine Liste Enthält Tupel, wobei jedes Tupel jedem Datensatz entspricht. Bei der Abfrage mehrerer Datensätze kann die Verwendung dieser Methode die Einfügeeffizienz effektiv verbessern.
13.1.3 Den Datensatz des Benutzernamens xiaoming löschen
>>> sql = 'delete from user where name="xiaoming"' >>> cursor.execute(sql) 1L >>> conn.commit() >>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchall() ((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))
13.1.4 Den Datensatz abfragen
>>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchone() # 获取第一条记录 (2L, u'zhangsan', u'123456') >>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchmany(2) # 获取两条记录 ((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'))
13.1.4 Das Ergebnis in Wörterbuchform zurückgeben
默认显示是元组形式,要想返回字典形式,使得更易处理,就用到cursor([cursorclass])中的cusorclass参数。 传入MySQLdb.cursors.DictCursor类: >>> cursor = conn.cursor(MySQLdb.cursors.DictCursor) >>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchall() ({'password': u'123456', 'id': 2L, 'name': u'zhangsan'}, {'password': u'123456', 'id': 3L, 'name': u'lisi'}, {'password': u'123456', 'id': 4L, 'name': u'wangwu'})
13.2 Abfrageergebnisse durchlaufen
#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb try: conn = MySQLdb.Connect(host='127.0.0.1', port=3306, user='root', passwd='123456', connect_timeout=3, charset='utf8') cursor = conn.cursor() sql = "select * from user" cursor.execute(sql) for i in cursor.fetchall(): print i except Exception, e: print ("Connection Error: " + str(e)) finally: conn.close() # python test.py (2L, u'zhangsan', u'123456') (3L, u'lisi', u'123456') (4L, u'wangwu', u'123456')
Verwenden Sie eine for-Schleife, um die Abfrageergebnisse zu durchlaufen und eine Ausnahmebehandlung hinzuzufügen.