python自带sqlite_python调用sqlite

参考资料: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的基本操作

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

importsqlite3importtkinterimporttkinter.messageboximportpymysqlimportos#本文教程#https://www.cnblogs.com/liaocheng/p/5198574.html

#commit() 事务提交#roolback() 事务回滚#close() 关闭数据库连接#cursor() 创建一个游标

#若数据库不存在,则自动创建一个数据库

cx = sqlite3.connect("text");#游标操作#-------*------#execute()--执行sql语句#executemany--执行多条sql语句#close()--关闭游标#fetchone()--从结果中取一条记录,并将游标指向下一条记录#fetchmany()--从结果中取多条记录#fetchall()--从结果中取出所有记录#scroll()--游标滚动

#创建游标

cu =cx.cursor()#建表 test 含id name nickname

try:

cu.execute("create table test (id integer,name varchar(10),nickname blob )")except:print("表已存在")

lb= "libo"

for t in [(2,lb,"123123"),(3,'12311','12312')]:

cx.execute("insert into test values (?,?,?)",t)

cx.commit()

sql1= "select name from test"cu.execute(sql1)

x=cu.fetchall()print(x)deftk():

window=tkinter.Tk()

window.geometry("400x300")

tkinter.Label(window,text='用户名:').place(x=100,y=80)

username=tkinter.StringVar()

entryname= tkinter.Entry(window,textvariable =username)

entryname.place(x=150,y=80)

username.set(x)

tk()

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

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

importsqlite3importtkinterimporttkinter.messageboximportpymysqlimportos

window=tkinter.Tk()defuserpass():

window.geometry("400x300")

canvas= tkinter.Canvas(window,height=300,width=500)

imagefile= tkinter.PhotoImage(file = "pokemon.png")

image= canvas.create_image(0,0,anchor='nw',image=imagefile)

canvas.pack(side='left')

tkinter.Label(window,text='用户名:').place(x=100,y=80)

tkinter.Label(window,text='密码:').place(x=100,y=140)

username=tkinter.StringVar()

entryname= tkinter.Entry(window,textvariable =username)

entryname.place(x=150,y=80)

password=tkinter.StringVar()

entrypass= tkinter.Entry(window,textvariable = password,show = '*')

entrypass.place(x=150,y=140)defregister():#输入框获取用户名密码

usernameg =username.get()

passwordg=password.get()print(usernameg,passwordg)#创建数据库

cx = sqlite3.connect("password.db");#创建游标

cu =cx.cursor()#创建数据库

try:

cu.execute("create table uspass (name varchar(10),password text )")except:print("表已存在,数据也已存入")

t=(usernameg,passwordg)

cx.execute("insert into uspass values (?,?)",t)

cx.commit()deflogin():

usernameg=username.get()

passwordg=password.get()

cx= sqlite3.connect("password.db");#创建游标

cu =cx.cursor()#创建数据库

sql1 = "select * from uspass"cu.execute(sql1)

x=cu.fetchall()if x[0][0] == usernameg and x[0][1] ==passwordg:

window.destroy()

manage()else:

tkinter.messagebox.showerror(message='账号错误')#print("这就登录了")

student= tkinter.Button(window,text ="注册&新增", command =register)

student.place(x=110,y=200)

student= tkinter.Button(window,text ="登录", command =login)

student.place(x=230,y=200)

window.mainloop()defmanage():

man_win=tkinter.Tk()

man_win.geometry("400x300")

name=tkinter.StringVar()

entryname= tkinter.Entry(man_win,textvariable =name)

entryname.place(x=150,y=40)

tkinter.Label(man_win,text='用户名:').place(x=100,y=80)

tkinter.Label(man_win,text='密码:').place(x=100,y=140)

username=tkinter.StringVar()

entryname= tkinter.Entry(man_win,textvariable =username)

entryname.place(x=150,y=80)

password=tkinter.StringVar()

entrypass= tkinter.Entry(man_win,textvariable =password)

entrypass.place(x=150,y=140)

cx= sqlite3.connect("password.db");

cu=cx.cursor()

sql= "select name from uspass"cu.execute(sql)

x=cu.fetchall()

name.set(x)defcha():

user=username.get()

cx= sqlite3.connect("password.db");

cu=cx.cursor()

sql= "select password from uspass where name = '" + user+"'"

#print(sql)

cu.execute(sql)

x=cu.fetchall()

password.set(x)defzeng():

user=username.get()

passw=password.get()

cx= sqlite3.connect("password.db");

cu=cx.cursor()

t=(user,passw)

cx.execute("insert into uspass values (?,?)", t)

cx.commit()defgai():

user=username.get()

passw=password.get()

cx= sqlite3.connect("password.db");

cu=cx.cursor()

sql= "update uspass set password='"+passw+"'"+ "where name ='" +user+"'"

#print(sql)

cu.execute(sql)

cx.commit()

cha= tkinter.Button(man_win,text ="查询", command =cha)

zeng= tkinter.Button(man_win,text = "添加",command =zeng )

gai= tkinter.Button(man_win,text = "修改",command =gai )

cha.place(x=110,y=200)

zeng.place(x=180,y=200)

gai.place(x=250,y=200)

window.mainloop()

userpass()

os.system("pause")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值