参考资料:https://www.liaoxuefeng.com/wiki/1016959663602400/1017801751919456  https://www.cnblogs.com/liaocheng/p/5198574.html

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。

就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件,它有以下优势

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。

  • SQLite 不需要配置,这意味着不需要安装或管理。

  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。

  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。

  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。

  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。

  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。

  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。

  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

python自带sqlite3这个库,无需导入,只要在前面import一下就好了

然后就是对数据库的操作,首先就是创建数据库

cx= sqlite3.connect("E:/test.db")  这行代码表示打开目标路径里的test.db文件,如果没有该文件,就会自动创建一个。当然也可以创建在内存中,cx = sqlite3.connect(":memory:")

sqlite有四种操作,commit(),rollback(),close()和cursor()。

commit为事务提交,每次执行sql语句后需要提交,然后操作结束时需要close,cursor是游标

用cu = cx.cursor()创建一个游标,游标对应操作如下

#execute()--执行sql语句   
#executemany--执行多条sql语句   
#close()--关闭游标   
#fetchone()--从结果中取一条记录,并将游标指向下一条记录   
#fetchmany()--从结果中取多条记录   
#fetchall()--从结果中取出所有记录   
#scroll()--游标滚动

用这些即可完成对sqlite的基本操作

给自己列了一个模板,以便日后使用

  1. import sqlite3
  2. import tkinter
  3. import tkinter.messagebox
  4. import pymysql
  5. import os
  6.  
  7. #本文教程
  8. #https://www.cnblogs.com/liaocheng/p/5198574.html
  9.  
  10. #commit() 事务提交
  11. #roolback() 事务回滚
  12. #close() 关闭数据库连接
  13. #cursor() 创建一个游标
  14.  
  15. #若数据库不存在,则自动创建一个数据库
  16. cx = sqlite3.connect("text");
  17.  
  18. #游标操作
  19. #-------*------
  20. #execute()--执行sql语句
  21. #executemany--执行多条sql语句
  22. #close()--关闭游标
  23. #fetchone()--从结果中取一条记录,并将游标指向下一条记录
  24. #fetchmany()--从结果中取多条记录
  25. #fetchall()--从结果中取出所有记录
  26. #scroll()--游标滚动
  27.  
  28. #创建游标
  29. cu = cx.cursor()
  30.  
  31. #建表 test 含id name nickname
  32. try:
  33. cu.execute("create table test (id integer,name varchar(10),nickname blob )")
  34. except:
  35. print("表已存在")
  36.  
  37. lb = "libo"
  38. for t in [(2,lb,""),(3,'','')]:
  39. cx.execute("insert into test values (?,?,?)",t)
  40. cx.commit()
  41.  
  42. sql1 = "select name from test"
  43. cu.execute(sql1)
  44. x = cu.fetchall()
  45. print(x)
  46.  
  47. def tk():
  48. window = tkinter.Tk()
  49. window.geometry("400x300")
  50. tkinter.Label(window,text='用户名:').place(x=100,y=80)
  51. username = tkinter.StringVar()
  52. entryname = tkinter.Entry(window,textvariable = username)
  53. entryname.place(x=150,y=80)
  54. username.set(x)
  55.  
  56. tk()

emmmm,自己写了一个记密码的程序用来测验对sqlite的操作,有兴趣可以看下

需要用到tkinter库,需要另外pip inastall一下

  1. import sqlite3
  2. import tkinter
  3. import tkinter.messagebox
  4. import pymysql
  5. import os
  6. window = tkinter.Tk()
  7.  
  8. def userpass():
  9. window.geometry("400x300")
  10. canvas = tkinter.Canvas(window,height=300,width=500)
  11. imagefile = tkinter.PhotoImage(file = "pokemon.png")
  12. image = canvas.create_image(0,0,anchor='nw',image=imagefile)
  13. canvas.pack(side='left')
  14. tkinter.Label(window,text='用户名:').place(x=100,y=80)
  15. tkinter.Label(window,text='密码:').place(x=100,y=140)
  16. username = tkinter.StringVar()
  17. entryname = tkinter.Entry(window,textvariable = username)
  18. entryname.place(x=150,y=80)
  19. password = tkinter.StringVar()
  20. entrypass = tkinter.Entry(window,textvariable = password,show = '*')
  21. entrypass.place(x=150,y=140)
  22. def register():
  23. #输入框获取用户名密码
  24. usernameg = username.get()
  25. passwordg = password.get()
  26. print(usernameg,passwordg)
  27.  
  28. #创建数据库
  29. cx = sqlite3.connect("password.db");
  30. #创建游标
  31. cu = cx.cursor()
  32. #创建数据库
  33. try:
  34. cu.execute("create table uspass (name varchar(10),password text )")
  35. except:
  36. print("表已存在,数据也已存入")
  37.  
  38. t = (usernameg,passwordg)
  39. cx.execute("insert into uspass values (?,?)",t)
  40. cx.commit()
  41. def login():
  42. usernameg = username.get()
  43. passwordg = password.get()
  44. cx = sqlite3.connect("password.db");
  45. #创建游标
  46. cu = cx.cursor()
  47. #创建数据库
  48. sql1 = "select * from uspass"
  49. cu.execute(sql1)
  50. x = cu.fetchall()
  51. if x[0][0] == usernameg and x[0][1] == passwordg:
  52. window.destroy()
  53. manage()
  54. else:
  55. tkinter.messagebox.showerror(message='账号错误')
  56. #print("这就登录了")
  57.  
  58. student = tkinter.Button(window,text ="注册&新增", command = register)
  59. student.place(x=110,y=200)
  60. student = tkinter.Button(window,text ="登录", command = login)
  61. student.place(x=230,y=200)
  62. window.mainloop()
  63.  
  64. def manage():
  65. man_win = tkinter.Tk()
  66. man_win.geometry("400x300")
  67. name = tkinter.StringVar()
  68. entryname = tkinter.Entry(man_win,textvariable = name)
  69. entryname.place(x=150,y=40)
  70.  
  71. tkinter.Label(man_win,text='用户名:').place(x=100,y=80)
  72. tkinter.Label(man_win,text='密码:').place(x=100,y=140)
  73. username = tkinter.StringVar()
  74. entryname = tkinter.Entry(man_win,textvariable = username)
  75. entryname.place(x=150,y=80)
  76. password = tkinter.StringVar()
  77. entrypass = tkinter.Entry(man_win,textvariable = password)
  78. entrypass.place(x=150,y=140)
  79.  
  80. cx = sqlite3.connect("password.db");
  81. cu = cx.cursor()
  82. sql = "select name from uspass"
  83. cu.execute(sql)
  84. x = cu.fetchall()
  85. name.set(x)
  86.  
  87. def cha():
  88. user = username.get()
  89. cx = sqlite3.connect("password.db");
  90. cu = cx.cursor()
  91. sql = "select password from uspass where name = '" + user+"'"
  92. #print(sql)
  93. cu.execute(sql)
  94. x = cu.fetchall()
  95. password.set(x)
  96.  
  97. def zeng():
  98. user = username.get()
  99. passw = password.get()
  100. cx = sqlite3.connect("password.db");
  101. cu = cx.cursor()
  102. t = (user,passw)
  103. cx.execute("insert into uspass values (?,?)", t)
  104. cx.commit()
  105.  
  106. def gai():
  107. user = username.get()
  108. passw = password.get()
  109. cx = sqlite3.connect("password.db");
  110. cu = cx.cursor()
  111. sql = "update uspass set password='"+passw+"'"+ "where name ='" +user+"'"
  112. #print(sql)
  113. cu.execute(sql)
  114. cx.commit()
  115.  
  116. cha = tkinter.Button(man_win,text ="查询", command = cha)
  117. zeng = tkinter.Button(man_win,text = "添加",command = zeng )
  118. gai = tkinter.Button(man_win,text = "修改",command = gai )
  119. cha.place(x=110,y=200)
  120. zeng.place(x=180,y=200)
  121. gai.place(x=250,y=200)
  122. window.mainloop()
  123.  
  124. userpass()
  125.  
  126. os.system("pause")

python调用sqlite的更多相关文章

  1. Python读取SQLite文件数据

    近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性.并发性要求不高的场景下可以尝试! 1.SQLite简介: SQLite是一个进程内 ...

  2. Python操作SQLite数据库的方法详解

    Python操作SQLite数据库的方法详解 本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开 ...

  3. 大华摄像头报警接口中图片加密,python调用c++方式实现解密

    项目中,大华摄像头的报警信息,里面有图片地址,需要1天内取下来,保持留痕 可惜,图片下载后,加密了,大华提供了android,ios,c++例子,没有提供java解密例子 没办法,只好先用c++例子简 ...

  4. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  5. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  6. python调用其他程序或脚本方法(转)

    python运行(调用)其他程序或脚本 在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地 ...

  7. python调用c\c++

    前言 python 这门语言,凭借着其极高的易学易用易读性和丰富的扩展带来的学习友好性和项目友好性,近年来迅速成为了越来越多的人们的首选.然而一旦拿python与传统的编程语言(C/C++)如来比较的 ...

  8. Python调用C++

    /***gcc -o libpycall.so -shared -fPIC pycall.c*/ #include <stdio.h> #include <stdlib.h> ...

  9. 使用Python调用Flickr API抓取图片数据

    Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...

随机推荐

  1. jquery赋值

    $("#test1").text("Hello world!"); $("#test2").html("<b>Hell ...

  2. How to read a paper efficiently - by prof. Pete carr

    DON'T DO THAT: read the article from the beginning to end; it's a waste of time! READ A PAPER IN TWO ...

  3. PP: Robust Anomaly Detection for Multivariate Time Series through Stochastic Recurrent Neural Network

    PROBLEM: OmniAnomaly multivariate time series anomaly detection + unsupervised 主体思想: input: multivar ...

  4. 最短路(Dijkstra,Floyd,Bellman_Ford,SPFA)

    当然,这篇文章是借鉴大佬的... 最短路算法大约来说就是有4种——Dijkstra,Floyd,Bellman_Ford,SPFA 接下来,就可以一一看一下... 1.Dijkstra(权值非负,适用 ...

  5. 巨杉TechDay回顾 | WARNING!您参加的数据库沙龙热度已爆表……

    自从2008年“大数据”这一概念被首次提出以来,在过去这10年中,几乎各行各业都或多或少受到了这一概念的影响.与此同时,在AI.云计算.物联网.区块链等新兴技术快速发展的今天,数据库己经成为了决定所有 ...

  6. HTML的学习结构

    HTML的学习结构 HTML的背景 HTML的创建 HTML的网页基本结构 HTML的基本标签 HTML的图像标签 HTML的链接标签 HTML的列表标签和表格标签 HTML的媒体元素(视频+音频) ...

  7. 本地项目如何上传到github

      首先登录官网注册用户(此处不多介绍),然后需要登录github创建仓库 https://github.com/ 然后取一个自己喜欢的名字(这里我的名字是webclock),点击Create rep ...

  8. 手动添加ubuntu服务

    在/etc/init.d/目录下创建一个简单的服务脚本,假设脚本名为hello #!/bin/sh case "$1" in start) # start 的代码 ;; stop) ...

  9. 数据库ETL同步 cdc开启,Git同步url添加用户名密码

    添加双主键 alter table TChargeRecordMainNew add constraint pk_name primary key (任务编码,序号) ---------------- ...

  10. 自定义jstl标签*

    原文链接:https://www.it610.com/article/442039.htm 步骤如下: 1.写tld文档:用来指定标签的名字,标签库等. 2.写标签处理器类. 3.配置到web.xml ...