Najlepszy samouczek Połączenie z bazą danych MySQL Python3 W 2024 r. W tym samouczku możesz dowiedzieć się instalacja PyMySQL,Database Connectivity,Tworzenie tabeli bazy danych,wkładka Database,zapytań do bazy danych,aktualizacja baz danych,usunięcie,sprawy wykonawcze,Obsługa błędów,
W tym artykule przedstawiamy Python3 wykorzystanie PyMySQL połączyć się z bazą danych i prosty CRUD.
PyMySQL dla połączenia z bazą danych serwera MySQL w wersji Python3.x, python2 w użyciu MySQLdb.
PyMySQL przestrzegać specyfikacji v2.0 Python Database API i zawiera biblioteki klienta MySQL-Python czystego.
Przed użyciem PyMySQL, musimy zapewnić zainstalowany PyMySQL.
PyMySQL Pobieranie: https: //github.com/PyMySQL/PyMySQL.
Jeśli nie jest już zainstalowany, można użyć następującego polecenia, aby zainstalować najnowszą wersję PyMySQL:
$ pip install PyMySQL
Jeśli system nie obsługuje polecenia pip, można użyć zainstalowane następujące:
1, za pomocą polecenia git pobrać pakiet instalacyjny (można również pobrać ręcznie):
$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install
2, jeśli trzeba opracować numer wersji, można użyć polecenia curl zainstalować:
$ # X.X 为 PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install $ # 现在你可以删除 PyMySQL* 目录
Uwaga: Upewnij się, że masz uprawnienia administratora do instalowania modułów opisanych powyżej.
Proces instalacji może pojawić się "ImportError: Nr moduł o nazwie setuptools" komunikat o błędzie, co oznacza, że nie ma potrzeby instalowania setuptools, można uzyskać dostęp https://pypi.python.org/pypi/setuptools znaleźć metodę instalacji każdego systemu.
Instalacja Linux Przykład:
$ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py
Przed podłączeniem do bazy danych, upewnij się, że następujące elementy:
Poniższe przykłady TESTDB Mysql łącza bazy danych:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 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.5.20-log
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/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 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/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()
Powyższy przykład można także zapisać w następujący sposób:
#!/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 ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 执行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/python3 import pymysql # 打开数据库连接 db = pymysql.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/python3 import pymysql # 打开数据库连接 db = pymysql.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/python3 import pymysql # 打开数据库连接 db = pymysql.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. |