sqlite3python

1.sqltile python怎么打开

SQLite是一种嵌入式数据库,它的数据库就是一个文件。

由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。

在使用SQLite前,我们先要搞清楚几个概念:表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表之间通过外键关联。

要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可。

由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。我们在Python交互式命令行实践一下:# 导入SQLite驱动:>>> import sqlite3# 连接到SQLite数据库# 数据库文件是test.db# 如果文件不存在,会自动在当前目录创建:>>> conn = sqlite3.connect('test.db')# 创建一个Cursor:>>> cursor = conn.cursor()# 执行一条SQL语句,创建user表:>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')# 继续执行一条SQL语句,插入一条记录:>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')# 通过rowcount获得插入的行数:>>> cursor.rowcount1# 关闭Cursor:>>> cursor.close()# 提交事务:>>> conn.commit()# 关闭Connection:>>> conn.close()我们再试试查询记录:>>> conn = sqlite3.connect('test.db')>>> cursor = conn.cursor()# 执行查询语句:>>> cursor.execute('select * from user where id=?', ('1',))# 获得查询结果集:>>> values = cursor.fetchall()>>> values[(u'1', u'Michael')]>>> cursor.close()>>> conn.close()使用Python的DB-API时,只要搞清楚Connection和Cursor对象,打开后一定记得关闭,就可以放心地使用。

使用Cursor对象执行insert,update,delete语句时,执行结果由rowcount返回影响的行数,就可以拿到执行结果。使用Cursor对象执行select语句时,通过featchall()可以拿到结果集。

结果集是一个list,每个元素都是一个tuple,对应一行记录。如果SQL语句带有参数,那么需要把参数按照位置传递给execute()方法,有几个?占位符就必须对应几个参数,例如:cursor.execute('select * from user where name=? and pwd=?', ('abc', '123456'))SQLite支持常见的标准SQL语句以及几种常见的数据类型。

具体文档请参阅SQLite官方网站。小结在Python中操作数据库时,要先导入数据库对应的驱动,然后,通过Connection对象和Cursor对象操作数据。

要确保打开的Connection对象和Cursor对象都正确地被关闭,否则,资源就会泄露。如何才能确保出错的情况下也关闭掉Connection对象和Cursor对象呢?请回忆try:。

except:。finally:。

的用法。

2.python sqlite3 怎么处理

python编码如果把中文数据存储至sqlite数据库某一字段中,再通过查询语句取出并进行相关的字符串操作时,经常会出现错误提示,类似于UnicodeDecodeError,提示某一类型编码不能转换。

出现这个问题的原因是因为python默认使用unicode处理sqlite3的TEXT类型(varchar类型也是如此,因为在sqlite中varchar其实就是TEXT)。python把中文存入数据库时使用了类似于GBK这样的编码,取出时会尝试把TEXT类型数据转换成unicode,从而出现错误。

由此导致的另一个不容易发现的错误是存储在数据库中的中文进行了base64之类的编码,在python中取出时不会存在错误,但是再进行base64解码,并与sqlite3中取出的其它text字段进行字符串拼接等处理,就出现编码转换错误,很难发现问题原因,可以把其它text字段进行如'aaa'.encode('gbk')编码成GBK码解决,但不提倡这种方法,更好方法如下:

解决方法是python连接sqlite数据库后进行如下设置:

conn = sqlite3.connection(“……”)

conn.text_factory = str

另外为了python代码中硬编码的中文字符串不出现问题,除了在源码开始添加

# -*- coding:utf-8 -*-

还要设置python源码的编码为utf-8

import sys

reload(sys)

sys.setdefaultencode('utf8')

sqlite3python

转载请注明出处代码入门网 » sqlite3python

资讯

简明python教程

阅读(35)

本文主要为您介绍简明python教程,内容包括看完了简明python教程,接着再看什么书啊?有没有解释模块(库)的,到底怎么使用python啊,学习D语言,Python应该看哪些书籍。如果你真的想好好学习编程,那么就要潜下心来认真的去学。1. 找一些好书看看

资讯

shutilpython

阅读(27)

本文主要为您介绍shutilpython,内容包括python2.7.3有shutil包吗,pythonshutil是不是默认模块,Pythonshutil.copy问题为什么无法传值。是会慢很多shutil.move的代码,如果src是dir,dst存在也是dir, 则先复制再删除src,所以会很慢,操作系统中是

资讯

python与r语言

阅读(32)

本文主要为您介绍python与r语言,内容包括Python语言与R语言区别,python与r语言哪个比较合适深度学习,python与r语言实现怎么样。数据结构方面,由于是从科学计算的角度出发,R中的数据结构非常的简单,主要包括向量(一维)、多维数组(二维时为矩阵)、

资讯

电子书python

阅读(29)

本文主要为您介绍电子书python,内容包括关于Python的经典入门书籍,Python入门书籍推荐,学习Python用哪本书好。如果你有一定的计算机编程知识基础,那么很容易学;再如果你对编程十分感兴趣,那么很容易学的。1,找到合适的入门书籍,大致读一次,循环

资讯

returninpython

阅读(27)

本文主要为您介绍returninpython,内容包括python怎么实现一个函数return后,自动执行另外一个函数,python中return怎么用,python中return是什么意思呢?。return 会直接另函数返回,函数就运行结束了,所有该函数体内的代码都不再执行了,所以该函

资讯

python3py

阅读(29)

本文主要为您介绍python3py,内容包括python3和python的区别,Python3.x和Python2.x的区别,为什么Python3写爬虫大家都是创建好几个.py文件,比如一个函数就。Python3.x 和 Python2.x 的区别 1. 性能 Py3.0 运行 pystone benchmark 的速度

资讯

python的排序算法

阅读(26)

本文主要为您介绍python的排序算法,内容包括python实现的几种排序算法,Python选择排序算法如何做!急求!!,如何用Python实现八大排序算法。#coding: utf-8 #!/usr/bin/python import random#随机生成0~100之间的数值def get

资讯

pythonifandif

阅读(32)

本文主要为您介绍pythonifandif,内容包括pythonelseif怎么表示,Pythonif语句,python的if语句问题。score = raw_input("score:") score=int(score) if(score >= 90) and (sc

资讯

python的书籍推荐

阅读(27)

本文主要为您介绍python的书籍推荐,内容包括关于Python方面比较好的书籍,Python好点的书推荐,Python入门书籍推荐。python的书很多 , 但是好书不多, 经过我这么多年的2113python学习,我总结出了一个python学习的读书路线:pytho

资讯

python程序设计

阅读(27)

本文主要为您介绍python程序设计,内容包括python程序设计,python程序设计,课程里面Python程序设计和Python高级程序设计有啥区别。# 如果能利用正则表达式(re模块)可能程序会更简单些。str_test = input("please enter a string:

资讯

python文件行数

阅读(30)

本文主要为您介绍python文件行数,内容包括Python读取指定行数,python怎么得到一个文件里面的行数,Python计算一个文件中有多少行即读取文件行数。写一个文本统计的脚本:计算并打印有关文本文件的统计数据,包括文件里包含多少个字符、行、单词

资讯

pythonreturnforin

阅读(24)

本文主要为您介绍pythonreturnforin,内容包括pythonreturn语句,inreturnfor有这个词组吗什么意思啊,python中函数嵌套循环语句时,return如何正确使用返回值。return语句是从函数返回一个值,每个函数都要有一个返回值。函数中一定要有return

资讯

python的冒号

阅读(19)

本文主要为您介绍python的冒号,内容包括python中的冒号:表示什么意思,python中的冒号到底是什么语义,python中什么时候需添加冒号?。函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型。函数后面跟着的箭头是函数返回值的

资讯

python文件到输出到文件

阅读(28)

本文主要为您介绍python文件到输出到文件,内容包括python怎样将结果输出到文件中,Python读取文档各行中同一列数据并按首尾相接合并输出到另一个文,python如何让一个函数的输出写入到一个文件中?。首先导入sys模块 import sys 然后在打算把

资讯

sqlite3python

阅读(104)

本文主要为您介绍sqlite3python,内容包括python自带sqlite3怎么用,pythonsqlite3怎么处理,python操作sqlite3简单的登录方法怎么写。要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;连接到数据库后,需要打开游标,称之为C