当前位置:   article > 正文

python的sqlite数据库_Python操作SQLite数据库

python sqlite long

### 连接数据库

从2.5版本开始,Python的标准库中就有了一个专门用于SQLite的sqlite3模块。连接SQLite数据库方式如下:

~~~

import sqlite3 as dbapi

con = dbapi.connect('population.db')

cur = con.cursor()

~~~

第一个语句用于引用数据库API;

第二个语句创建了一个到数据库的连接(connection):调用数据库模块的connect方法。该方法的参数是一个字符串,它定义了我们所要连接的那个数据库。由于SQLite是将整个数据库保存在磁盘上的某个文件中的,因此这里就是该文件的路径。如果该数据库不存在,就会直接创建出来;

第三个语句用于获取一个游标,它类似于文本编辑器中的光标,用于记录我们当前在数据库中的位置;当多个程序同时访问数据库时,该数据库可以知道谁在干什么。

**数据类型对比**

| SQLite | Python | 说明 |

|-----|-----|-----|

| NULL | NontType | 啥也不知道 |

| INTEGER | int或long | 整数 |

| REAL | float | 8字节浮点数 |

| TEXT | unicode或str | 字符串 |

| BLOB | buffer | 二进制数据(Binary Large OBject) |

### 操作数据库

现在我们就可以操作数据库了,我们将要执行的SQL语句放到一个字符串中,并告诉数据库去执行这个字符串,如下所示:

~~~

cur.execute('CREATE TABLE Student(Stuid TEXT, Age INTERGER, Name TEXT)')

cur.execute('INSERT INTO Student VALUES("00001", 20, "Lucy")')

cur.execute('INSERT INTO Student VALUES("00002", 21, "Lily")')

~~~

在将数据库插入到数据库或对数据库做了任何其他修改之后,我们必须通过连接的commit方法提交(commit)这些修改:

~~~

con.commit()

~~~

现在我们可以用如下方式来获取数据:

~~~

cur.execute('SELECT * FROM Student')

print(cur.fetchone())

print(cur.fetchall())

~~~

fetchone方法以**元组**的形式返回每条记录,其中各元素按查询所指定的顺序排列。如果不再有其他记录存在,则返回None。默认情况下,数据库中的TEXT是以Unicode字符串的形式返回的,我们可以告诉sqlite3以str的类型返回字符串:将连接的text_factory成员设置为类型str。

~~~

con.text_factory = str

~~~

fetchall方法的功能是以元组列表的形式返回查询所产生的全部数据。

一种较为快捷的插入方式:

~~~

ss = [("00003", 20, "David"), ("00004", 23, "Cneagle"),

("00005", 22, "qxzy")]

for s in ss:

cur.execute('INSERT INTO Student VALUES(?, ?, ?)', (s[0], s[1], s[2]))

con.commit()

~~~

这次execute的调用用到了两个参数,第一个是带有问号的SQL语句,这些问号是将要插入的值的占位符,第二个是由待插入值所组成的元组,数据库在执行该语句时,会用这些值从左到右地替换那些问号。

注意:

- SQL的数据类型与编程语言中的数据类型并不完全相同,因此在编写应用程序的时候很有必要在它们之间进行类型转换。

- 在被提交之前,对数据库做出的修改不会有任何效果。这保证了当数据库被两个以上的程序同时操作时,能够保持一致的状态。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/891473
推荐阅读
相关标签
  

闽ICP备14008679号