1. 1 sqlite3.connect(database [,timeout ,other optional arguments])
  2. API 打开一个到 SQLite 数据库文件 database 的链接。您可以使用 ":memory:" 来在 RAM 中打开一个到 database 的数据库连接,而不是在磁盘上打开。如果数据库成功打开,则返回一个连接对象。
  3.  
  4. 当一个数据库被多个连接访问,且其中一个修改了数据库,此时 SQLite 数据库被锁定,直到事务提交。timeout 参数表示连接等待锁定的持续时间,直到发生异常断开连接。timeout 参数默认是 5.05 秒)。
  5.  
  6. 如果给定的数据库名称 filename 不存在,则该调用将创建一个数据库。如果您不想在当前目录中创建数据库,那么您可以指定带有路径的文件名,这样您就能在任意地方创建数据库。
  7.  
  8. 2 connection.cursor([cursorClass])
  9. 该例程创建一个 cursor,将在 Python 数据库编程中用到。该方法接受一个单一的可选的参数 cursorClass。如果提供了该参数,则它必须是一个扩展自 sqlite3.Cursor 的自定义的 cursor 类。
  10.  
  11. 3 cursor.execute(sql [, optional parameters])
  12. 该例程执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问号和命名占位符(命名样式)。
  13.  
  14. 例如:cursor.execute("insert into people values (?, ?)", (who, age))
  15.  
  16. 4 connection.execute(sql [, optional parameters])
  17. 该例程是上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。
  18.  
  19. 5 cursor.executemany(sql, seq_of_parameters)
  20. 该例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。
  21.  
  22. 6 connection.executemany(sql[, parameters])
  23. 该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executemany 方法。
  24.  
  25. 7 cursor.executescript(sql_script)
  26. 该例程一旦接收到脚本,会执行多个 SQL 语句。它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句应该用分号(;)分隔。
  27.  
  28. 8 connection.executescript(sql_script)
  29. 该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executescript 方法。
  30.  
  31. 9 connection.total_changes()
  32. 该例程返回自数据库连接打开以来被修改、插入或删除的数据库总行数。
  33.  
  34. 10 connection.commit()
  35. 该方法提交当前的事务。如果您未调用该方法,那么自您上一次调用 commit() 以来所做的任何动作对其他数据库连接来说是不可见的。
  36.  
  37. 11 connection.rollback()
  38. 该方法回滚自上一次调用 commit() 以来对数据库所做的更改。
  39.  
  40. 12 connection.close()
  41. 该方法关闭数据库连接。请注意,这不会自动调用 commit()。如果您之前未调用 commit() 方法,就直接关闭数据库连接,您所做的所有更改将全部丢失!
  42.  
  43. 13 cursor.fetchone()
  44. 该方法获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None
  45.  
  46. 14 cursor.fetchmany([size=cursor.arraysize])
  47. 该方法获取查询结果集中的下一行组,返回一个列表。当没有更多的可用的行时,则返回一个空的列表。该方法尝试获取由 size 参数指定的尽可能多的行。
  48.  
  49. 15 cursor.fetchall()
  50. 该例程获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表。
  1. 连接数据库
  2. 下面的 Python 代码显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。
  1. import sqlite3
  2.  
  3. conn = sqlite3.connect('E:\\test.db')
  4. print("Opened database successfully")
  1. Opened database successfully
  1. 创建表
  2. 下面的 Python 代码段将用于在先前创建的数据库中创建一个表:
  1. import sqlite3
  2.  
  3. conn = sqlite3.connect('E:\\test.db')
  4. print("Opened database successfully")
  5. c = conn.cursor()
  6. c.execute('''CREATE TABLE COMPANY
  7. (ID INT PRIMARY KEY NOT NULL,
  8. NAME TEXT NOT NULL,
  9. AGE INT NOT NULL,
  10. ADDRESS CHAR(50),
  11. SALARY REAL);''')
  12. print("Table created successfully")
  13. conn.commit()
  14. conn.close()
  1. Opened database successfully
  2. Table created successfully
  1. import sqlite3
  2.  
  3. conn = sqlite3.connect('E:\\test.db')
  4. c = conn.cursor()
  5. print("Opened database successfully")
  6.  
  7. c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 )")
  8.  
  9. c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
  10.  
  11. c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")
  12.  
  13. c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
  14.  
  15. conn.commit()
  16. print("Records created successfully")
  17. conn.close()
  1. Opened database successfully
  2. Records created successfully
  1. SELECT 操作
  2. 下面的 Python 程序显示了如何从前面创建的 COMPANY 表中获取并显示记录:
  1. import sqlite3
  2.  
  3. conn = sqlite3.connect('E:\\test.db')
  4. c = conn.cursor()
  5. print("Opened database successfully")
  6.  
  7. cursor = c.execute("SELECT id, name, address, salary from COMPANY")
  8. for row in cursor:
  9. print("ID = ", row[0])
  10. print("NAME = ", row[1])
  11. print("ADDRESS = ", row[2])
  12. print("SALARY = ", row[3])
  13.  
  14. print("Operation done successfully")
  15. conn.close()
  1. Opened database successfully
  2. ID = 1
  3. NAME = Paul
  4. ADDRESS = California
  5. SALARY = 20000.0
  6. ID = 2
  7. NAME = Allen
  8. ADDRESS = Texas
  9. SALARY = 15000.0
  10. ID = 3
  11. NAME = Teddy
  12. ADDRESS = Norway
  13. SALARY = 20000.0
  14. ID = 4
  15. NAME = Mark
  16. ADDRESS = Rich-Mond
  17. SALARY = 65000.0
  18. Operation done successfully
  1. UPDATE 操作
  2. 下面的 Python 代码显示了如何使用 UPDATE 语句来更新任何记录,然后从 COMPANY 表中获取并显示更新的记录:
  1. import sqlite3
  2.  
  3. conn = sqlite3.connect('E:\\test.db')
  4. c = conn.cursor()
  5. print("Opened database successfully")
  6.  
  7. c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
  8. conn.commit()
  9. print("Total number of rows updated :", conn.total_changes)
  10.  
  11. cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
  12. for row in cursor:
  13. print("ID = ", row[0])
  14. print("NAME = ", row[1])
  15. print("ADDRESS = ", row[2])
  16. print("SALARY = ", row[3])
  17.  
  18. print("Operation done successfully")
  19. conn.close()
  1. Opened database successfully
  2. Total number of rows updated : 1
  3. ID = 1
  4. NAME = Paul
  5. ADDRESS = California
  6. SALARY = 25000.0
  7. ID = 2
  8. NAME = Allen
  9. ADDRESS = Texas
  10. SALARY = 15000.0
  11. ID = 3
  12. NAME = Teddy
  13. ADDRESS = Norway
  14. SALARY = 20000.0
  15. ID = 4
  16. NAME = Mark
  17. ADDRESS = Rich-Mond
  18. SALARY = 65000.0
  19. Operation done successfully
  1. DELETE 操作
  2. 下面的 Python 代码显示了如何使用 DELETE 语句删除任何记录,然后从 COMPANY 表中获取并显示剩余的记录:
  1. import sqlite3
  2.  
  3. conn = sqlite3.connect('E:\\test.db')
  4. c = conn.cursor()
  5. print("Opened database successfully")
  6.  
  7. c.execute("DELETE from COMPANY where ID=2")
  8. conn.commit()
  9. print("Total number of rows deleted :", conn.total_changes)
  10.  
  11. cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
  12. for row in cursor:
  13. print("ID = ", row[0])
  14. print("NAME = ", row[1])
  15. print("ADDRESS = ", row[2])
  16. print("SALARY = ", row[3])
  17.  
  18. print("Operation done successfully")
  19. conn.close()
  1. Opened database successfully
  2. Total number of rows deleted : 1
  3. ID = 1
  4. NAME = Paul
  5. ADDRESS = California
  6. SALARY = 25000.0
  7. ID = 3
  8. NAME = Teddy
  9. ADDRESS = Norway
  10. SALARY = 20000.0
  11. ID = 4
  12. NAME = Mark
  13. ADDRESS = Rich-Mond
  14. SALARY = 65000.0
  15. Operation done successfully

吴裕雄--python学习笔记:sqlite3 模块的更多相关文章

  1. 吴裕雄--python学习笔记:sqlite3 模块的使用与学生信息管理系统

    import sqlite3 cx = sqlite3.connect('E:\\student3.db') cx.execute( '''CREATE TABLE StudentTable( ID ...

  2. 吴裕雄--python学习笔记:os模块的使用

    在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块. 1.当前路径及路径下 ...

  3. 吴裕雄--python学习笔记:通过sqlite3 进行文字界面学生管理

    import sqlite3 conn = sqlite3.connect('E:\\student.db') print("Opened database successfully&quo ...

  4. 吴裕雄--python学习笔记:os模块函数

    os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...

  5. 吴裕雄--python学习笔记:BeautifulSoup模块

    import re import requests from bs4 import BeautifulSoup req_obj = requests.get('https://www.baidu.co ...

  6. 吴裕雄--python学习笔记:爬虫基础

    一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...

  7. 吴裕雄--python学习笔记:爬虫包的更换

    python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...

  8. 吴裕雄--python学习笔记:爬虫

    import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...

  9. Python学习笔记之模块与包

    一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...

随机推荐

  1. LeetCode——48. 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: 给定 m ...

  2. 吴裕雄--天生自然Linux操作系统:Linux 系统启动过程

    linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 . 用户登录系统. in ...

  3. 吴裕雄--天生自然TensorFlow高层封装:Estimator-DNNClassifier

    # 1. 模型定义. import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist impor ...

  4. nouveau :failed to create kernel chanel,-22

    一:錯誤描述:今天在重啓 Ubuntu 的過程中,出現下圖的 grub 選項,系統重啓/開機之後出現以下畫面,然後選擇 Ubuntu 之後黑屏,提示錯誤:nouveau :failed to crea ...

  5. LGOJ3879 TJOI2010 阅读理解

    不可否认,\(TJOI\)的这道题确实不难 为本题写博客的唯一原因就是 \(STL\)大法好!!!! Description link 不简述题意了,因为实在是简单 Solution 直接\(map& ...

  6. Evaluation metrics for classification

    Accuracy/Error rate ACC = (TP+TN)/(P+N) ERR = (FP+FN)/(P+N) = 1-ACC Confusion matrix Precision/Recal ...

  7. 第2章 Innodb 存储引擎

    一.InnoDB 体系架构 1.1后台线程 master thread:刷新内存中的数据到磁盘 io thread:处理 IO 请求,AIO purge thread:清理undo 页的回收 page ...

  8. 利用GetCharWidth32获取字符串宽度2

    /////////////////////////////////////////////////////////////// // 04FirstWindow.cpp文件 #include < ...

  9. Ubuntu16装Flash

    第一种方法: 1)下载flash的tar.gz压缩包.(以·tar.gz为后缀的文件是一种压缩文件,在Linux和macOS下常见,Linux和macOS都可以直接解压使用这种压缩文件) https: ...

  10. 吴裕雄--天生自然 JAVA开发学习:异常处理

    try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 } import java.io.*; public class ExcepTest{ publi ...