Руководство pymysql

1 Введение

2 Создайте таблицу библиотеки

Мы начнем с созданием базы данных, таблицы данных говорят, со столом библиотеки, за только в соответствии CRUD.

2.1 Создание базы данных

Pymysql всех операций на базе должен сначала установить соединение с сервером базы данных, а затем создать курсор для выполнения конкретной инструкции SQL основан. Создание базы данных следующим образом:

# - * - Coding: UTF-8 - * - 
Импорт pymysql 
 
сопп = pymysql.connect ( # создать соединение с базой данных 
    хоста = ' 10.10.11.131 ' , # хостов базы данных внутрибрюшинно для подключения 
    Пользователя = ' БКИ ' , # базы данных пользователь Войти имя 
    пароль = ' 123456! ' , # Логин пароль пользователя 
    Charset = ' utf8 '  # кодирование, будьте осторожны , чтобы не написать utf8 
) 
в Cursor = con.cursor () 
в Cursor .Execute ( " Создать базы данных символов TEST_DB в SET utf8; ")
 # После выполнения базы данных и закрывает курсор забудьте подключить 
cursor.close () 
conn.Close ()

После реализации указанного выше кода, мы создали базу данных с именем test_db из:

 

2,2, чтобы создать таблицу данных

# - * - Coding: UTF-8 - * - 
Импорт pymysql 
 
сопп = pymysql.connect ( # создать соединение с базой данных 
    хоста = ' 10.10.11.131 ' , # хостов базы данных внутрибрюшинно для подключения 
    Пользователя = ' БКИ ' , # базы данных пользователь Войти имя 
    пароль = « 123456! » , # лог пароль пользователя 
    базы данных = « TEST_DB » , # имя соединения с базой данных может быть последующим cursor.execture ( «пользователь test_db») , указанный 
    Charset = « utf8 »  # кодирование, внимание не может быть записан в кодировке UTF -8 
)
 
Курсор = conn.cursor () # создать курсор 
 
# операторы SQL , чтобы создать таблицу, необходимо выполнить 
SQL = "" " 
в поле Создать таблицу книги ( 
BookID INT AUTO_INCREMENT Первичный ключ, 
BookName VARCHAR (255) не равно нулю, 
в авторах VARCHAR (255) NOT NULL , 
year_publication YEAR не равно нулю 
); 
«» " 
 
cursor.execute (SQL) # использовать курсор для выполнения SQL 
 
# не забудьте закрыть соединение с базой данных и курсор после выполнения 
cursor.close () 
conn.Close ()

В этом примере, создать таблицу данных, при создании подключения службы базы данных, мы = «test_db» эта строка коды определяют параметры, связанные с целевой базой данных через базу данных, если не указать базу данных при создании подключения службы базы данных, вы можете следить с помощью курсора. execture ( «пользователь test_db») способ задания базы данных.

Примеры данных для создания базы данных и могут быть видны из приведенных выше таблиц, сервер базы данных, чтобы создать соединение pymysql выполнять определенные операции, а затем создать курсор, соединяясь с курсором для выполнения конкретной инструкции SQL для выполнения конкретных операций над базой данных. Мало того, можно создать таблицу базы данных, данные, вы также можете создавать индексы, представления и т.д., метод же, он не будет описан здесь.

 3 CRUD

3,1 вставка

Вставка операция может быть выполнена двумя способами и выполнить курсор executemany. Примечание: Пока существует модификация операции (вставка, обновление, удаление) после того, как с помощью метода выполнения, вам нужно совершить метод вызывается снова, чтобы изменить базу данных, в конечном счете вступит в силу на листе данных.

выполнить метод, чтобы вставить запись, executemany вставить несколько записей:

(1) выполнить: первый запись вставки

cursor.execute ( " INSERT INTO Book (BookName, авторы, year_publication) значения (" % S», "% S", S%), ' % ( ' Питон от входа , чтобы отказаться от ' ' Работа " , 2019 )) 
Conn .commit ()

Формулировка выше, чтобы использовать строку для создания местозаполнителя% S полного выражения SQL, а затем выполнить. На самом деле, pymysql курсор также поставляется с этой функцией, и это кажется более удобным, так что мы можем выполнить выполнить этот метод:

cursor.execute ( " INSERT INTO Book (BookName, авторы, year_publication) значения (% S,% S,% S) '( ' Питон от входа отказаться от ' ' Работа " , 2019 )) 
conn.commit ()

Преимущество этого метода заключается в том, что без кавычек% с (если в кавычках, котировки будут вставлены данные в таблицу данных) SQL заявление, когда курсор, что это заявление будет судить, является ли тип данных в кавычках.

(2) executemany: вставка множество записей

= Данные [ 
    ( ' 21 ввода дней на в Java ' , ' Цукерберг ' , 2018 ), 
    ( ' Linux обучения руководства ' , ' Linus ' , 2017 ), 
    ( ' MySQL базы данных , чтобы убежать от удален ' , ' Билл Гейтс '2018 ), 
] 
cursor.executemany ( ' INSERT INTO Book (BookName, авторы, year_publication) значения ( "% S", "% S", S%); ' , данные) 
conn.commit ()

3,2 обновление

cursor.execute ( ' Обновление книги авторы SET% =% S = S WHERE BookName; ' , [ " Ма " , " Питон от входа , чтобы отказаться от " ]) 
conn.commit ()

3.3 Запросы

Запрос является наиболее сложным, но и самым к работе. Мы разделили операции выборки, курсор находится в двух частях.

(1) операция выборки

Вставка, обновление и удаление операция должна быть выполнена снова вступают в силу после совершения операции, а также операции запроса вступают в силу только после выполнения выборки операции. Операция извлечения включает в себя три метода, а именно fetchone (), fetchall (), fetchmany ().

  • fetchall (): Все записи, указанные в запросе
cursor.execute ( ' выберите * из книги , где BookID <% s; ' , [4 ]) 
книги = cursor.fetchall ()
 печать (книги)

Выход:

((1, 'Python от входа, чтобы отказаться', 'М', 2019), (2, 'Python от входа, чтобы отказаться', 'М', 2019), (3, '21 дней записи целиком на Java '' бар Кебо С», 2018))

Выход хранится в виде кортежа, и каждая запись представляет собой элемент, который определяется с помощью курсора в курсоре, в дальнейшем также приходит.

  • fetchmany (размер): Определяет количество запросов записей
cursor.execute ( ' выберите * из книги , где BookID <% s; ' , [4 ]) 
книги = cursor.fetchmany (2 )
 печати (книги)

Выход:

((1, 'Python от входа отказаться от', 'ма', 2019), (2, 'Python от входа отказаться от', 'Ма', 2019))

Как можно видеть, fetchmany (размер) берется в соответствии с передним самым количеством записей указанного запроса. размер здесь относится к количеству записей вы хотите удалить.

  • fetchone (): удалить первую запись
cursor.execute ( ' выберите * из книги , где BookID <% s; ' , [4 ]) 
книги = cursor.fetchone ()
 печать (книги)

Выход:

(1, 'Python от входа, чтобы отказаться', 'М', 2019)

либо fetchone () эквивалентен fetchmany (1), взятый из записей, которые соответствуют критериям поиска первыми.

(2) курсор

Перед тем, как использовать основаны на тип курсора курсора по умолчанию, кроме того, pymysql также DictCursor, SSCursor, SSDictCursor эти типы курсоров.

  • DictCursor

Перед использованием курсора возвращается данные сохраняются на пути кортежей и DictCursor в виде словаря хранится. Создание этого типа метода курсора очень просто, этот класс может быть передана DictCursor в conn.sursor () метод:

курсор = conn.cursor (pymysql.cursors.DictCursor) # 创建一个字典游标 
cursor.execute ( ' выберите * из книги , где BookID <% s; ' , [3 ]) 
книги = cursor.fetchall ()
 печать (книги) 
курсора .Execute ( ' выберите * из книги , где BookID <% s; ' , [3 ]) 
book_one = cursor.fetchone ()
 для печати (book_one)

Выход:

[{ 'BookID': 1, 'BookName': 'Python от входа отказаться от', 'авторы': 'Ма',»year_publication ': 2019}, {' BookID ': 2,' BookName ':' Python от входа отказаться от '' авторы: 'Ма', 'year_publication': 2019}]
{ 'BookID': 1, 'BookName': 'Python от входа отказаться от', 'авторы': 'Ма', 'year_publication': 2019}
  • SSCursor и SSDictCursor

SSCursor и SSDictCursor называются потоковый курсор, например курсор курсор не используются выше и DictCursor в качестве единовременного возврата всех данных, потокового курсор по одному за другим придется возвращать данные запроса, так что этот тип курсора применяется в условиях низкой памяти, пропускная способность сети мала, большое количество сценариев приложений данных.

Потоковая курсор, используя метод, аналогичный итератор, каждый из которых принимает рецикл генерирует:

курсор = conn.cursor (pymysql.cursors.SSCursor) # 创建一个流式游标 
cursor.execute ( ' выберите * из книги; ' ) 
книга = cursor.fetchone ()
 в то время как книга:
 печать (книга) 
Книга = cursor.fetchone ( )

Выход:

(1, 'Python от входа, чтобы отказаться', 'М', 2019)
(2, 'Python от входа, чтобы отказаться', 'М', 2019)
(3, '21 дней полная запись Java '' Цукерберг», 2018)
(4, 'Linux обучения по эксплуатации', 'Linus', 2017)
(5, «MySQL базы данных будут удалены с ноги„“Билл Гейтс», 2018)
Примечание: В то время как потоковое есть метод fetchall () курсор, то результат называется обычный курсор возвращает все данные, но лучше не называть, он потеряет преимущество потокового курсор. При использовании проточного типа курсора, если большое количество данных, было в обращении вызывает курсор пересекающего состояние, то соединение с базы данных (Conn) занято, она больше не может быть использована для выполнения другой SQL, если он хочет сделать другой SQL должен затем создать соединение с базой данных, долго занимаемое подключением к базе данных курсора ограниченно, если поток курсор был пройден, через 60 секунд соединение с базой данных отбрасываются, но может передавать параметры init_command при создании соединения с базой данных = ( «SET nET_WRITE_TIMEOUT = XX «), чтобы установить тайм-аут.

SSDictCursor разницы SSCursor и подобна разнице между курсором и DictCursor, не здесь во введении.

3.4 Удалить

Используйте pymysql вставки, обновления и удаления операции аналогичны, в конце концов мы должны взять на себя обязательство представить:

cursor.execute ( ' удалить из книги , где BookID =% s; ' , [1 ]) 
conn.commit ()

В это время, запись была удалена BookID 1, как показано ниже:

Вы можете также использовать executemany () удалить более чем один раз:

cursor.executemany ( ' удалить из книги , где BookID =% S; ' , [[2], [4 ]]) 
conn.commit ()

Как показано ниже, BookID записи 2 и 4 были удалены:

 4 Резюме

pymysql также предоставляет механизмы транзакций, но я до сих пор не понимаю, вопросов, а не в блог и написал: изменить базу данных для выполнения нескольких операций (несколько выполнить метод), когда существует способ, в котором есть ненормально, это совершить, все Все будет успешным, так почему откатить его? Если старшее поколение, кто знает ответ, не забудьте сообщить, очень благодарен!

рекомендация

отwww.linuxidc.com/Linux/2019-08/160158.htm
рекомендация