python中sqlite3的介绍和运用

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命令

代码输出:

python中sqlite3的介绍和运用_第1张图片 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是否已经存在于数据库中,不存在就创建,存在则不创建. 

你可能感兴趣的:(sqlite,数据库,python)