PYTHON 连接和创建SQLite数据库

访问SQLite数据库时,需要先导入sqlite3模块,然后调用connec()方法建立数据库连接。
例如:

如果使用“:memory:”表示文件名,Python会创建一个内存数据库。内存数据库中的所有数据均保存在内存中,关闭连接对象时,所有数据自动删除。
例如:
>>> cn =sqlite3.connect(':memory:')

如果使用空字符串作为文件名,Python会创建一个临时数据库。临时数据库有一个临时文件,所有数据保存在临时文件中。连接对象关闭时,临时文件和数据也会自动删除。

>>> cn=sqlite3.connect('')

执行完所有操作后,应执行 close() 方法关闭连接对象,释放占用的资源。

>>> cn.close()


创建表

通过连接对象或游标对象的 execute() 方法执行 create table 语句创建表。
例如:

添加记录
通过连接对象或游标对象的execute()方法执行insert into语句创建表。例如:

>>>n=cur.execute('insertinto test (name,age) values("王五",25)')

或者:

>>>n=cur.execute('insertinto test values("John",18)')

添加记录后,可使用游标对象的rowcount属性查看影响的记录行数。例如:

>>> cur.rowcount

1


SQLite允许在insertinto语句中使用问号表示参数,在execute()方法中用元组提供参数数据。例如:

>>>n=cur.execute('insertinto test values(?,?)',('mike',20))

使用参数时,可以使用executemany()方法一次添加多条记录,记录数据用元组列表表示。例如:

>>>n=cur.executemany('insertinto test values(?,?)',[('cate',17),('tome',18)])  #添加2条记录

>>> cur.rowcount

2


执行记录相关的修改操作(添加、删除或更新)时,应执行连接对象的commit()方法提交修改。如果没有执行commit()方法,关闭连接对象后,所有修改都会失效。
例如,执行commit()方法提交修改:

>>> cn.commit()

连接对象的另一个方法rollback()可用于撤销最后一次调用commit()方法后所做的修改。
例如:

>>> cn.rollback()


执行查询
执行select语句可返回数据库中的数据。
例如:

使用连接对象执行select语句时,返回包含查询结果的游标对象。游标对象的fetchall()方法提取全部查询结果。提取出的查询结果中,每条记录为一个元组,所有记录的元组组成一个列表。
可以使用游标对象来执行select语句。例如:


游标对象在执行select语句时,也可返回包含查询结果的游标对象,可将该对象赋值给变量。在前面的例子中,没有将返回的游标对象赋值给其他变量,所以查询结果仍保存在当前游标对象中。
下面的语句使用另一个变量来引用游标对象执行select语句时返回的游标对象:

可以使用循环来迭代fetchall()方法取回的数据。例如:

fetchone()方法可以每次提取一条记录,返回的记录为一个元组。在达到表位时,返回None。例如,下面的代码执行查询并输出全部记录:

fetchmany(n)方法可以每次提取n条记录。不指定参数时,返回一条记录。例如:


使用Row对象
Row对象可存储数据表中每行记录的字段名和数据。要在查询结果中返回Row对象,需要将连接对象的row_factory属性设置为“sqlite3.Row”,设置后,在游标对象的fetchX方法返回的数据中,每个记录为一个Row对象。
可将Row对象转换为列表、元组、字典等序列对象。可对Row对象使用位置或字段名索引字段的值。Row对象的keys()方法可返回字段名列表。



修改记录


删除记录


导入文件中的数据
Python程序中将plan.xls中的数据导入SQLite数据库有两种方法:
Excel文件转换为csv文件再导入
或者使用第三方扩展库xlrd直接读取Excel文件。
  1.Excel文件转换为CSV文件再导入


  2.使用xlrd直接读取Excel文件导入
xlrd是一个第三方的扩展库,用于操作Excel文件,可在https://pypi.python.org/pypi/xlrd下载xlrd组件包。将下载的组件包解压,然后在命令行切换到解压后的目录,再执行“setup.pyinstall”完成安装。



猜你喜欢

转载自blog.csdn.net/anxin997483092/article/details/79774158
今日推荐