Najlepszy samouczek Operacje python bazy danych MySQL W 2024 r. W tym samouczku możesz dowiedzieć się Czym jest MySQLdb?,Jak zainstalować MySQLdb?,Database Connectivity,Tworzenie tabeli bazy danych,wkładka Database,zapytań do bazy danych,aktualizacja baz danych,usunięcie,Usuwanie danych usuwania danych dla tabeli, Poniższy przykład ilustruje usuwanie danych w dobie tabeli pracownik jest większa niż 20, wszystkie dane: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close(),sprawy wykonawcze,Obsługa błędów,
Python standardowy interfejs bazy danych dla Pythona DB-API Python DB-API udostępnia interfejs programowania aplikacji bazy danych dla programistów.
Interfejs bazy danych Python obsługuje bardzo dużych baz danych, można wybrać projekt bazy danych:
Możesz uzyskać dostęp do interfejsu bazy danych Pythona i API Zobacz szczegółową listę obsługiwanych baz danych.
Różnych baz danych Musisz pobrać inny moduł DB API, na przykład, trzeba uzyskać dostęp do baz danych Oracle i MySQL, należy pobrać moduł bazy danych MySQL i Oracle.
DB-API jest specyfikacją, która definiuje zbiór obiektów i bazy danych musi tryb dostępu, w celu zapewnienia spójnego interfejsu dostępu do różnorodnych bazowego systemu bazodanowego oraz rozmaite programu interfejsu bazy danych.
Pythona DB-API dla większości z bazy danych implementuje interfejs, używać po podłączeniu do bazy danych, można użyć ten sam sposób każde bazy danych.
Python DB-API przy użyciu procesu:
MySQLdb jest interfejsem dla Python mysql połączenia z bazą danych, które implementuje specyfikację Python Database API v2.0, w oparciu o ustanowieniu MySQL C API.
Aby pisać skrypty MySQL z DB-API, należy upewnić się, że masz zainstalowany MySQL. Skopiuj poniższy kod i go wykonać:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb
Jeśli wyjście jest następujący po wykonaniu, co oznacza, że nie mają modułu MySQLdb jest zainstalowany:
Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb
Zainstaluj MySQLdb, odwiedź http://sourceforge.net/projects/mysql-python (platforma Linux można uzyskać: https://pypi.python.org/pypi/MySQL-python ) Stąd wybrać dla swojej platformy pakiet instalacyjny, pre-kompilowane do plików binarnych i pakiet kodu źródłowego.
W przypadku wybrania opcji binarnej wersji systemu, instalator poprosi, aby zakończyć instalację podstawową. W przypadku instalacji z kodu źródłowego, należy przejść do katalogu MySQLdb uwalnianie najwyższego poziomu, a następnie wpisz następujące polecenie:
$ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $ python setup.py build $ python setup.py install
Uwaga: Upewnij się, że masz uprawnienia administratora do instalowania modułów opisanych powyżej.
Przed podłączeniem do bazy danych, upewnij się, że następujące elementy:
Poniższe przykłady TESTDB Mysql łącza bazy danych:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取一条数据库。 data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接 db.close()
Realizacja powyższego scenariusza wyprowadza wyniki przedstawiają się następująco:
Database version : 5.0.45
Jeśli istnieje połączenie z bazą danych, możemy użyć metody execute (), aby utworzyć tabele bazy danych, tworzyć pracownika tabeli pokazano w poniższym przykładzie:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 创建数据表SQL语句 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # 关闭数据库连接 db.close()
Poniższy przykład używa wykonać instrukcji INSERT, aby dodać rekord dla pracownika tabeli:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.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: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close()
Powyższy przykład można także zapisać w następujący sposób:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Poniższy kod wykorzystuje zmienne przekazać parametry do instrukcji SQL:
plplplplplplplplplplplplplplplplpl user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) plplplplplplplplplplplplplplplplpl
Pyton Mysql zapytania przy użyciu metody fetchone (), w celu uzyskania pojedynczych danych za pomocą fetchAll () w celu uzyskania wielu danych.
Odkryj PRACOWNIK Tabela wynagrodzeń (płac) Pole danych jest większa niż wszystkie 1000:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # 关闭数据库连接 db.close()
Wyniki wykonania powyższego skryptu przedstawiają się następująco:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Dane aktualizujące operację dla aktualizowania tabeli danych, następujące przykłady testdb dziedzinie seks stolik wszystkie zmiany 'M', pola AGE jest zwiększany o 1:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Usuwanie danych usuwania danych dla tabeli, Poniższy przykład ilustruje usuwanie danych w dobie tabeli pracownik jest większa niż 20, wszystkie dane:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close()
Mechanizm transakcja w celu zapewnienia spójności danych.
Usługi powinny mieć cztery właściwości: niepodzielność, spójność, izolacja, trwałość. Te cztery właściwości są często określane jako właściwości kwasowych.
Python DB API 2.0 udostępnia dwie metody commit lub rollback.
# SQL删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()
Na bazie transakcyjnej bazy danych, programowania w Pythonie, kiedy kursor ma siedzibę, automatycznie rozpoczyna transakcję bazy niewidoczny.
metodę commit () dla wszystkich metody aktualizacje kursora rollback (), aby cofnąć wszystkie operacje bieżącego kursora. Każda metoda rozpoczęła nową działalność.
DB API definiuje pewne błędy i nieprawidłowe funkcjonowanie bazy danych, poniższa tabela zawiera błędy i wyjątki:
nienormalny | opis |
---|---|
ostrzeżenie | Gdy istnieje poważne ostrzeżenie wyzwalającym, takim jak wstawianie danych, jest obcinana, i tak dalej. To musi być podklasą StandardError. |
błąd | Wszystkie inne klasy błędach innych niż ostrzeżenia. To musi być podklasą StandardError. |
InterfaceError | Uruchamiany, gdy moduł interfejsu bazy danych ma swój własny błąd (zamiast bazy danych błędu) występuje. To musi być podklasą błąd. |
Databaseerror | Wyzwalanie i błędy bazy danych związane. To musi być podklasą błąd. |
DataError | Gdy nie ma wystąpił błąd przetwarzania danych, gdy uruchomiony, na przykład: dzielenie przez zero błąd, dane poza zakresem, i tak dalej. To musi być podklasą Databaseerror. |
OperationalError | To odnosi się do nie-kontrolowane przez użytkownika, ale wystąpił błąd podczas bazy danych. Na przykład: przypadkowo odłączony, nazwa bazy danych nie zostanie znaleziony, transakcja nie powiedzie się, błąd alokacji pamięci, itp wystąpił błąd bazy danych operacji. To musi być podklasą Databaseerror. |
IntegrityError | Błędy związane Integrity-, takie jak sprawdzenie klucza obcego nie powiedzie się i tym podobne. To musi być Databaseerror podklasy. |
Internalerror | Wewnętrzny błąd bazy danych, takie jak kursora (kursor) nie powiedzie się, synchronizacja transakcji awarii i tak dalej. To musi być Databaseerror podklasy. |
ProgrammingError | błędy proceduralne, takie jak tabeli danych (tabela) nie został znaleziony lub już istnieje, błąd składni SQL, numer błędu parametrów, i tak dalej. To musi być podklasą Databaseerror. |
NotSupportedError | Błąd nie jest obsługiwany, odnosi się do wykorzystania funkcji, takich jak API lub w bazie danych nie obsługuje. Na przykład za pomocą .rollback funkcję obiekt połączenia (), ale baza danych nie obsługuje transakcje lub transakcja została zamknięta. To musi być podklasą Databaseerror. |