SQLite的Python编程
0、 引言Python提供了基于sqlite3的模块,在Python2.7.3版本中已经默认的安装了。这里我们只需要使用即可 1、 利用sqlite3进行Python的编程操作上一章节我们用sqlite提供的命令通过命令行的方式对数据库进行了操作,这里我们将使用python的API接口来实现对数据库的创建,查找,删除等操作 1.1 数据库的链接对数据库进行操作,首先需要做到能够连接到数据库上,如下所示; import sqlite3 conn = sqlite3.connect('C:sqlitetesttestDB.db') 这里需要首先import sqlite3模块,否则的话是查找不到相应的命令的 1.2 创建数据库表cur = conn.cursor()
createSQL = 'create table tbl_Device (ID INT PRIMARY KEY NOT NULL, DEVNAME TEXT NOT NULL, USERID INT NOT NULL)' cur.execute(createSQL) conn.commit()
第一条语句是获取数据库的游标,第三条语句是执行数据库,最后一条语句是提交修改,不提交的话,实际上数据库并不会将语句执行。第二句就是创表的语句,我们发现其实和上一章的命令是一致的。 1.3 插入数据创建了表后,如果没有数据的话,那么实际是没用的,下面我们就给表插入数据 insertSQL1 = 'insert into tbl_Device values (1,"NE=1",1)' insertSQL2 = 'insert into tbl_Device values (2,"NE=2",1)' cur.execute(insertSQL1) cur.execute(insertSQL2)
1.4 查找数据插入数据后,我们可以利用select命令查看插入的数据是否存在 selectSQL = 'select * from tbl_Device'
cur.execute(selectSQL)
name=[f[0] for f in cur.description]
for row in cur.fetchall():
for pair in zip(name,row):
print pair
最终会显示如下的结果: ('ID',1)
('DEVNAME',u'NE=1')
('USERID',1)
('ID',2)
('DEVNAME',u'NE=2')
('USERID',1)
1.5 更新数据同样的,可以用update命令来更新数据 updateSQL = 'update tbl_Device set DEVNAME=''NE=3 where ID=1' cur.execute(selectSQL)
1.6 其他对于所有的sql命令,都可以利用上面的方式进行执行语句,包括delete命令,drop命令等等,他们的行为都是一致的,这里就不再详细解读。 1.7 关闭连接当我们执行完了所有的数据库命令,我们一般要做下面的步骤 conn.commit() conn.close()
事物提交以及关闭数据库连接 2、基础的API接口上面总结了sqlite在Python中的实际应用,下面我们就来详细分析一下sqlite的数据库API接口 2.1 连接数据库的接口sqlite3.connect(database [,timeout,other optional arguments]) 2.2 获取游标的接口connection.cursor([cursorClass]) 2.3 执行语句的接口cursor.execute(sql [,optional parameters]) 2.4 执行脚本cursor.executescript(sql_script) 2.5 提交当前的事物connection.commit() 2.6 回滚connection.rollback() 2.7 关闭数据库连接connection.close() 2.8 读取下一行结果cursor.fetchone() 2.8 读取所有剩余结果cursor.fetchall() 基本上常见的接口就是这些了,更详细的信息可以参见这里 3 关于查找的输出显示在上面我们使用了游标的方式执行select语句,然后将其构造成zip的格式,然后用fetchall的方式将其打印出来 conn1=sqlite3.connect('C:sqlitetesttestDB.db')
createSQL1 = 'create table tbl_User (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, sex TEXT)' conn1.execute(createSQL1) insertSQL3 = 'insert into tbl_User values (1,"ahmed",30,"male")' insertSQL4 = 'insert into tbl_User values (2,"Bob",28,"male")' insertSQL5 = 'insert into tbl_User values (3,"cristina",18,"female")' conn1.execute(insertSQL3) conn1.execute(insertSQL4) conn1.execute(insertSQL5) conn1.commit() selectSQL1 = 'select * from tbl_User' cur = conn1.execute(selectSQL1) for row in cur: print "ID = ",row[0] print "NAME = ",row[1] print "AGE = ",row[2] print "SEX = ",row[3] conn1.close()
这里游标直接指向了执行后的结果数据,然后直接读取游标指向的结果。 ID = 1
NAME = ahmed
AGE = 30
SEX = male
ID = 2
NAME = Bob
AGE = 28
SEX = male
ID = 3
NAME = cristina
AGE = 18
SEX = female
殊途同归,都可以将信息打印出来 4、执行sql脚本现实中,我们不会在python脚本里写create或者insert这种语句,这样的编程是很凌乱的。实际操作中一般都是在sql脚本中编写需要执行的sql语句,然后在python脚本中调用并且执行sql脚本 python脚本文件 import sqlite3
conn = sqlite3.connect('testDB.db')
cursor = conn.cursor()
f = open(r"test.sql")
cursor.executescript(f.read())
conn.commit()
conn.close()
sql脚本文件: create table tbl_User (ID INTEGER PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INTEGER NOT NULL,sex TEXT);
insert into tbl_User values (1,"male");
insert into tbl_User values (2,"male");
insert into tbl_User values (3,"female");
执行结果查询: D:eclipseWorkspacePythonLearningsrc>sqlite3 testDB.db
SQLite version 3.19.2 2017-05-25 16:50:27
Enter ".help" for usage hints.
sqlite> .table
COMPANY tbl_User
sqlite> select * from tbl_User;
1|ahmed|30|male
2|Bob|28|male
3|cristina|18|female (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |