Python操作SQLite数据库理解SQLite数据库安装Python后SQLite数据库会自动安装到你的电脑上,通过它可以将数据永久保存在本地电脑里,有人肯定说过我们可以将数据存储在文件中,为什么要存储在数据库中呢?嗯,用起来肯定舒服(说了和没说一样)。老实说,很多时候不需要问为什么。先上手,以后再添加这些概念性的东西。在某些场景下使用数据库比使用文件更好,当然只是在某些场景下。在Python中通过importsqlite3导入模块。SQLite数据库的基本使用一般分为以下三个步骤。连接数据库,操作数据库,关闭数据库,使用以下命令连接数据库。conn=sqlite3.connect("databasename")该方法中,如果数据库存在,则自动建立连接。如果不存在,则先创建数据库,再建立连接关系。使用后记得及时关闭数据库。conn.close()上面代码中的conn是一个普通的变量,一般称为数据库连接对象,记住它也是一个对象,它必须有属性和方法。请运行以下代码检查本地目录中是否有额外的文件。importsqlite3conn=sqlite3.connect("my_data.db")conn.close()创建SQLite数据库表通过connect方法,可以与数据库文件建立连接。返回的对象是连接对象。该对象常用的方法如下。close关闭数据库连接;提交更新数据库内容;cursor创建一个游标对象,可以执行execute方法;execute执行SQL数据库命令,如数据表的创建、查询、删除、更新等。SQLite数据类型在正式学习SQLite数据库操作之前,需要学习数据库中包含的几种数据类型,因为SQLite比较简单,所以涉及的数据类型并不多。NULL空值;INTEGER整数;真正的浮点数;文本字符串;BLOB富文本数据,如图片、歌曲。有了以上内容,就可以开始操作数据库了。在此之前,我需要添加一个概念。一个数据库可以包含多个表。通俗地说,一个my_data.db文件可以包含多个表。在my_data.db文件中创建第一个表。importsqlite3#连接my_data.db数据库conn=sqlite3.connect("my_data.db")#创建游标对象cursor=conn.cursor()#创建表SQL语句sql="""createtablestudents(idint,nametext,sextext,ageint)"""#执行sql语句cursor.execute(sql)#关闭游标对象cursor.close()#关闭数据库连接conn.close()相关注释已添加代码中,注意conn对象和cursor对象,使用后需要关闭,cursor对象先于conn对象关闭。创建表学生(idint,nametext,sextext,ageint)|内容是一条建表SQL语句,其中createtable表名(字段列表),每个字段定义都是按照字段名字段类型格式设计的。通过这条SQL语句,可以在数据库中创建一张students表,该表包含4列,分别是id、name、sex、age。这里你可以把表格想象成一个类似表格的东西。idnamesexage创建了students表之后,就不能再创建同名的表了。即上面代码执行时会报错,此时可以使用try...except语句。importsqlite3#连接my_data.db数据库conn=sqlite3.connect("my_data.db")#创建游标对象cursor=conn.cursor()#创建表SQL语句sql="""createtablestudents(idint,nametext,sextext,ageint)"""try:#执行sql语句cursor.execute(sql)except:print("数据库中已经存在该表")#关闭游标对象cursor.close()#关闭数据库连接conn。向close()表中添加数据在数据库中创建表之后,就可以添加数据了。表中的数据一般称为一条记录。接下来使用insertdata命令向表中添加一条学生数据。importsqlite3#连接到my_data.db数据库conn=sqlite3.connect("my_data.db")#创建游标对象cursor=conn.cursor()#SQLinsert_sql用于向表中插入数据="""insertintostudentsvalues(?,?,?,?)"""try:#待插入的数据data=(1,"Charlie","Male",18)#执行sql语句cursor.execute(insert_sql,data)#更新数据库内容,插入数据,删除数据,更新数据时不要忘记这条命令conn.commit()exceptExceptionase:print("insertexception",e)#关闭游标对象cursor.close()#关闭数据库连接conn.close()上面代码的核心是insertintostudentsvalues(?,?,?,?),也是一条SQL语句。使用execute方法执行这条语句时,需要在该方法的第二个参数中传入相应的数据。也就是说,如果SQL语句中有三个问号,那么这里的第二个参数也应该是一个三元组。查询数据库中的表数据查询语句的SQL格式为:select*fromtablename查询students表中的数据代码如下:importsqlite3#connecttomy_data.dbdatabaseconn=sqlite3.connect("my_data.db")#建立游标对象cursor=conn.cursor()#查询语句SQLselect_sql="""select*fromstudents"""try:#executesqlstatementresults=cursor.execute(select_sql)print(results)forrecordinresults:print(record)exceptExceptionase:print("queryexception",e)#关闭游标对象cursor.close()#关闭数据库连接conn.close()使用上面的代码读取所有的数据库中指定表中的数据。还有,当我们执行results=cursor.execute(select_sql)时,输出的results对象类型是
