Python操作SQLite

作者: 0ea4660c3010 | 来源:发表于2017-01-14 22:05 被阅读0次

在web开发中,经常要与数据库打交道。数据库分为关系型数据库非关系型数据库。其中最常用的是关系型数据库,也叫SQL数据库。
那么Python中如何操作SQL数据库呢?
操作环境:Python 3.6.0
SQL版本:sqlite3
下面我们以图书为例,在Python控制台进行演示操作。

创建连接

conn = sqlite3.connect('book.db')
c = conn.cursor()

cursor叫做游标,用来执行SQL语句。

创建表格

sql = "create table BOOK(
  title text,
  author text,
  price integer,
  pubdate text
)"
c.execute(sql)
conn.commit()

SQL支持的数据类型有Text,Integer等。

添加数据

sql = "insert into BOOK values ('python','jason',36,'2017-1-14')"
c.execute(sql)
sql = "insert into BOOK values ('http','tom',42,'2016-2-14')"
c.execute(sql)
conn.commit()

修改数据

sql = "update BOOK set title='flask' where rowid=1"
c.execute(sql)
conn.commit()

删除数据

sql = "delete from BOOK where title='flask'"
c.execute(sql)
conn.commit()

搜索数据

sql = "select * from BOOK"
#执行SQL之后,得到corsor对象。可以使用for循环遍历出结果。
rows= c.execute(sql)
for row in books:
  print(row)
'''result: 
('python','jason',36,'2017-1-14')
('http','tom',42,'2016-2-14')'''

上面我们介绍了创建表格以及对表格的四种操作。除了这些,还有几点需要注意的地方;

  • 以删除数据为例。实际工作中,删除的数据往往是从外部获取得到的,并不是写死的。
title = ('linux',)
#insecure
sql = "delete BOOK where title={}".format('linux')
c.execute(sql)
#do this instead
sql = "delete BOOK where title=?"
c.execute(sql,title)

我们使用参数化查询,来防止SQL注入。参数用tuple的形式传递。

  • 搜索数据的结果,可以用fetchall()来处理。
sql = "select * from BOOK"
c.execute(sql)
lst = c.fetchall()
for row in lst:
  print(row)
'''result: 
('python','jason',36,'2017-1-14')
('http','tom',42,'2016-2-14')'''

当然,除了fetchall()以外,还有fetchone(),fetchmany()等。

相关文章

网友评论

    本文标题:Python操作SQLite

    本文链接:https://www.haomeiwen.com/subject/zpxybttx.html