1、基本介绍:   
        SQLite是一个开源的轻量级数据库,整个数据库是一个磁盘文件,包在一个相对小的C库中,处理速度快,无服务器,不需要配置.
        标准Python库内置了对SQLite数据库连接的支持.它包含sqlite3模块,是Gerhad Haring编写的DB-API
V2兼容模块,遵循DB-API 2.0
 

2、步骤
      step 1 --- 连接数据库
      step 2 --- 创建数据库的游标
      step 3 --- sql命令的建立
      step 4 --- 通过execute()函数执行sql命令
      
 
import sqlite3 conn = sqlite3.connect("D:\py\龙星.db")
#括号里是数据库所在的路径,库名后面要带".db",没有此数据库则创建在指定的路径下 c = conn.cursor() #创建数据库的游标 sql =
"""CREATE TABLE stock2 (菜名,单价)""" #创建一个名称是stock2的表单,”CREATE TABLE"是创建表单的意思
c.execute(sql) #通过execute()函数执行sql命令
代码输出:
sqlite_mater表单是数据库自带的

提醒:第二行中的数据库的名称一定要带“.db”后缀,第四行sql括号中的菜名和单价不用加引号,错误示范:("菜名","单价")
,通过创建游标来调用execute()方法执行sql命令.
 

3、数据的插入和查询:
       
数据的插入和查询和创建表单一样,同样是通过sql命令实现的,不过相较于创建表单,要注意的一点就是,在数据插入之后,要调用commit()方法保存修改.
        单行插入——>  游标.execute("INSERT INTO 表单名称
(值1,值2,...)),值的个数要与表单的列数保持一直,这里有菜单和单价两列,所以值的个数是2.
        多行插入——> 多行插入的数据外面套了一层列表,所以多行插入的方式更加安全,也更加灵活,代码如下:
 
import sqlite3 conn = sqlite3.connect("D:\py\龙星.db") c = conn.cursor() # sql =
"""CREATE TABLE stock2 (菜名,单价)""" 一个相同的数据库不能创建两次,否则会报错 # c.execute(sql)
c.execute("INSERT INTO stock2 VALUES ('白菜','6')") #单行插入 sqls =
[('菠菜','4'),('胡萝卜','5')] #多行插入 c.executemany("INSERT INTO stock2 VALUES
(?,?)",sqls) conn.commit() #保存修改
         数据查询是先通过执行sql命令选择数据,再通过游标调用fetchall()方法返回一个列表实现的,代码如下:
 
import sqlite3 conn = sqlite3.connect("D:\py\龙星.db") c = conn.cursor() # sql =
"""CREATE TABLE stock2 (菜名,单价)""" # c.execute(sql) c.execute("INSERT INTO
stock2 VALUES ('白菜','6')") sqls = [('菠菜','4'),('胡萝卜','5')]
c.executemany("INSERT INTO stock2 VALUES (?,?)",sqls) conn.commit()
c.execute("SELECT * FROM stock2") #选择数据库中的全部数据,*表示全部选择,*也可以改为已有的名称,如:单价
print(c.fetchall()) #返回一个包含数据的列表
4、解决表单已存在的报错问题,报错实例:
         

 

除了把创建已存在表单的代码注释外,我们还可以通过自定义一个函数的方式避免出现这类报错,代码如下: 

 
import sqlite3 def check(db_name,table_name):
#自定义一个check函数,db.name表示数据库名,table_name表示表单名 conn = sqlite3.connect(db_name) c =
conn.cursor() c.execute('SELECT tbl_name FROM sqlite_master')
#sqlite_master表单是数据库自带的,表单中包含了我们添加的所有表单名 values = c.fetchall() #返回包含表单名的列表,
返回形如[('stock2')] tables = [] #创建一个列表接收表单名称,经下面的for循环处理后,['stock2'] for i in
values: tables.append(i[0]) if table_name in tables: #判断table_name
是否包含在tables列表中 print("表单存在") return False else: return True if __name__ ==
'__main__': conn = sqlite3.connect('D:\py\龙星.db') c = conn.cursor() if
check('D:\py\龙星.db',"stock2") == True: #如果函数返回值是True,则可以创建表单 c.execute("CREATE
TABLE stock2 (名字,年龄)")
大致思路:判断table_name是否已经存在于数据库中,不存在就创建,存在则不创建. 

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信