Содержание
- 2. SQLite Несколько таблиц
- 3. Новая БД import sqlite3 import os import datetime db_path='e:/sqlite/' db_file='db11.db' full_path=os.path.join(db_path,db_file) print(sqlite3.apilevel) print(full_path) con=sqlite3.connect(full_path) con.close()
- 4. Создание таблиц sql='''\ CREATE TABLE IF NOT EXISTS author( id_author INTEGER PRIMARY KEY, name_author TEXT, descr_author
- 5. con=sqlite3.connect(full_path) cur=con.cursor() cur.executescript(sql) cur.close() con.close()
- 6. Заполнение автора con=sqlite3.connect(full_path) cur=con.cursor() sql='''\ INSERT INTO author (name_author, descr_author) VALUES ("Чуковский", "Автор множества книг для
- 7. Заполнение типов публикаций с использованием кортежей и словаря con=sqlite3.connect(full_path) cur=con.cursor() var1=("Роман",) var2=(2,"Рассказ") var3={"id":3, "name":"Стихотворение"} sql1='''INSERT INTO
- 8. cur.execute(sql1,var1) cur.execute(sql2,var2) cur.execute(sql3,var3) con.commit() cur.close() con.close()
- 9. Создание и использование списка из кортежей для заполнения var_list=[ (1,1,"Айболит","Добрый доктор",100), (1,2, "Бармалей", "Злой разбойник",200), (1,3,
- 10. Исполнение и просмотр числа изменений con.execute(''' UPDATE publication SET name_publication='роман в стихах' WHERE id_publication = 3
- 11. Вывод элементов по одному print(cur.execute(''' SELECT * FROM books ''')) print(cur.fetchone()) print(cur.fetchone()) print(cur.fetchone()) print(cur.fetchone()) print(cur.fetchone())
- 12. Использование метода итератора __next__() print(cur.execute('''SELECT * FROM books''')) print(cur.__next__()) print(cur.__next__()) print(cur.__next__()) print(cur.__next__()) print(cur.__next__())
- 13. Вывод через for print(cur.execute('''SELECT * FROM books''')) for i in cur: print("{0}".format(i))
- 14. Использование fetchmany print(cur.execute('''SELECT * FROM books''')) print(cur.arraysize) print(cur.fetchmany()) print(cur.fetchmany()) print(cur.fetchmany()) print(cur.fetchmany())
- 15. Сравнение fetch cursor.execute("SELECT id, name FROM `table`") for i in range(cursor.rowcount): id, name = cursor.fetchone() print
- 16. Размер массива объектов print(cur.execute('''SELECT * FROM books''')) print(cur.arraysize) print(cur.fetchall()) print(cur.fetchall())# второй fetchall выводит пустой список
- 17. row_factory с Row и обращение по индексам и ключам con.row_factory=sqlite3.Row a_list=cur.fetchall() print(a_list) print(type(a_list)) print(len(a_list)) print(a_list[0][3]) print(a_list[0]['title_book'])
- 18. row_factory Существует возможность изменить это свойство на имя функции, которая принимает курсор (cur) и исходную строку
- 19. def dict_factory(cursor, row): d = {} for i, col_name in enumerate(cursor.description): d[col_name[0]] = row[i] d[i]=row[i] return
- 20. con.row_factory = sqlite3.Row Поддерживает отображающийся доступ по имени столбца, индексу, итерации, представлению,. Если два объекта Row
- 21. text_factory работа с кодировками и обработка текста con.text_factory=bytes # представление в байтовом виде print(cur.execute('''SELECT * FROM
- 22. Пользовательская text_factory con.text_factory=lambda s: str(s, "utf-8") print(cur.execute("SELECT * FROM books")) print(cur.fetchone())
- 23. def my01(input): return input.decode('cp1251') con.text_factory = my01
- 24. text_factory Свойство используется для управления возвращаемыми текстовыми значениями
- 25. Удаление записей >>> cur.execute("INSERT INTO author VALUES (NULL,'Маршак','Автор стихов')") >>> cur.execute("DELETE FROM author WHERE name_author='Маршак'") >>>
- 26. Отмена действий rollback() var1=("Маршак",) sql1='''INSERT INTO author (name_author) VALUES(?) ''' cur.execute(sql1,var1) cur.execute("SELECT * FROM author") print(cur.fetchall())
- 28. Скачать презентацию