Python使用sqlite3模块内置数据库


Posted in Python onMay 07, 2020

1、python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量。

#!/usr/bin/env python3
#创建SQLite3内存数据库,并创建带有四个属性的sales表
#sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程
import sqlite3
#使用‘:memory:'在内存中创建了一个数据库,创建了连接对象con来代表数据库
con = sqlite3.connect(':memory:')
#创建表名为sales的表,将这个字符串赋值给query
query = """CREATE TABLE sales
      (customer VARCHAR(20),
      product VARCHAR(40),
      amount FLOAT,
      date DATE);"""
#使用连接对象的execute()方法执行query中的SQL命令
con.execute(query)
#使用连接对象的commit()方法将修改提交(保存)到数据库
con.commit()
#向表中插入几行数据
data = [('Richard Lucas','Notepad',2.50,'2019-01-02'),
    ('Jenny Kim','Binder',4.15,'2019-01-05'),
    ('Svetlana Crow','Printer',155.75,'2019-02-03'),
    ('Stephen Randolph','Computer',679.40,'2019-02-20')]
#将插入语句赋给变量statement,?是占位符
statement = "INSERT INTO sales VALUES(?,?,?,?)"
#因为有四个占位符,这里就需要提供一个包含4个值的元组,executemany()方法为data中的每个数据元组执行
#statement中的SQL命令,这里执行了四次insert命令
con.executemany(statement,data)
#将修改保存到数据库
con.commit()
#查询sales表,并将命令结果赋值给一个光标对象cursor,光标对象有execute、executemany、fetchone、
#fetchmany和fetchall方法
cursor = con.execute("SELECT * FROM sales")
#返回结果集中的所有行
rows = cursor.fetchall()
print(rows)
print('………………')
#查询结果中行的数量
row_counter = 0
for row in rows:
  print(row)
  row_counter += 1
print('………………')
print('Number of rows: %d' % (row_counter))

Spyder右下角打印出来的结果:

[('Richard Lucas', 'Notepad', 2.5, '2019-01-02'), ('Jenny Kim', 'Binder', 4.15, '2019-01-05'), ('Svetlana Crow', 'Printer', 155.75, '2019-02-03'), ('Stephen Randolph', 'Computer', 679.4, '2019-02-20')]
………………
('Richard Lucas', 'Notepad', 2.5, '2019-01-02')
('Jenny Kim', 'Binder', 4.15, '2019-01-05')
('Svetlana Crow', 'Printer', 155.75, '2019-02-03')
('Stephen Randolph', 'Computer', 679.4, '2019-02-20')
………………
Number of rows: 4

2、python内置的sqlite3模块,向表中插入新纪录

名称为“CSV测试数据.csv”的数据源:

Python使用sqlite3模块内置数据库

将本地“CSV测试数据.csv”的数据导入到本地数据库football_game.db中:

#!/usr/bin/env python3
#创建SQLite3内存数据库,并创建带有四个属性的sales表
#sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程
import sqlite3
import csv
input_file = "F://python入门//数据1//CSV测试数据.csv"
#为一个简单的本地数据库football_game.db创建连接,football_game.db为数据库名称
con = sqlite3.connect('football_game.db')
#创建了一个光标
c = con.cursor()
#如果表名存在,则删除它
drop_table = """DROP TABLE IF EXISTS football_game;"""
c.execute(drop_table)
con.commit()
#创建表名为football_game的表,将这个字符串赋值给create_table
create_table = """CREATE TABLE IF NOT EXISTS football_game
      (name VARCHAR(20),
      sex VARCHAR(10),
      age INT,
      score INT,
      device_number VARCHAR(20),
      cost VARCHAR(20));"""
#使用连接对象的execute()方法执行create_table中的SQL命令
c.execute(create_table)
#使用连接对象的commit()方法将修改提交(保存)到数据库
con.commit()
#从CSV格式的输入文件中读取要加载到数据库中的数据,创建file_reader对象,用于存储CSV中的数据集
file_reader = csv.reader(open(input_file,'r'),delimiter=',')
#从输入文件中读入第一行
header = next(file_reader,None)
#将输入的所有数据进行循环,先是每行循环,再是每列循环
for row in file_reader:
  data = []
  for column_index in range(len(header)):
    data.append(row[column_index])
  print(data)
  c.execute("INSERT INTO football_game VALUES(?,?,?,?,?,?)",data)
#将修改保存到数据库
con.commit()
print('………………')
#执行选择所有数据的SQL
output = c.execute("SELECT * FROM football_game")
#返回结果集中的所有行,返回的是一个大的列表
rows = output.fetchall()
print(rows)
print('………………')
for row in rows:
  output = []
  for column_index in range(len(row)):
    output.append(str(row[column_index]))
  print(output)

Spyder右下角打印出来的结果:

['李刚', '男', '32', '567', '18512349553', '$500.00 ']
['王红', '女', '54', '423', '18256785181', '$750.00 ']
['孙晓', '女', '25', '457', '13698762112', '$250.00 ']
['郭亮', '男', '65', '350', '18654320816', '$125.00 ']
['高英', '女', '15', '390', '18511113141', '$815.00 ']
………………
[('李刚', '男', 32, 567, '18512349553', '$500.00 '), ('王红', '女', 54, 423, '18256785181', '$750.00 '), ('孙晓', '女', 25, 457, '13698762112', '$250.00 '), ('郭亮', '男', 65, 350, '18654320816', '$125.00 '), ('高英', '女', 15, 390, '18511113141', '$815.00 ')]
………………
['李刚', '男', '32', '567', '18512349553', '$500.00 ']
['王红', '女', '54', '423', '18256785181', '$750.00 ']
['孙晓', '女', '25', '457', '13698762112', '$250.00 ']
['郭亮', '男', '65', '350', '18654320816', '$125.00 ']
['高英', '女', '15', '390', '18511113141', '$815.00 ']

3、python内置的sqlite3模块,更新数据表中的记录

名称为“CSV测试数据.csv”的数据源:

Python使用sqlite3模块内置数据库

更新表中的记录:

#!/usr/bin/env python3
#创建SQLite3内存数据库,并创建带有四个属性的sales表
#sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程
import sqlite3
import csv
input_file = "F://python入门//数据1//CSV测试数据.csv"
#使用‘:memory:'在内存中创建了一个数据库,创建了连接对象con来代表数据库
con = sqlite3.connect(':memory:')
#创建表名为sales的表,将这个字符串赋值给query
query = """CREATE TABLE IF NOT EXISTS sales
      (customer VARCHAR(20),
      product VARCHAR(40),
      amount FLOAT,
      date DATE);"""
#使用连接对象的execute()方法执行query中的SQL命令
con.execute(query)
#使用连接对象的commit()方法将修改提交(保存)到数据库
con.commit()
#向表中插入几行数据
data = [('Richard Lucas','Notepad',2.50,'2019-01-02'),
    ('Jenny Kim','Binder',4.15,'2019-01-05'),
    ('Svetlana Crow','Printer',155.75,'2019-02-03'),
    ('Stephen Randolph','Computer',679.40,'2019-02-20')]
#for tuple in data:
#  print(tuple)
#将插入语句赋给变量statement,?是占位符
statement = "INSERT INTO sales VALUES(?,?,?,?)"
#因为有四个占位符,这里就需要提供一个包含4个值的元组,executemany()方法为data中的每个数据元组执行
#statement中的SQL命令,这里执行了四次insert命令
con.executemany(statement,data)
#将修改保存到数据库
con.commit()
#读取CSV文件并更新特定的行
file_reader = csv.reader(open(input_file,'r'),delimiter=',')
#从输入文件中读入第一行
header = next(file_reader,None)
#将输入的所有数据进行循环,先是每行循环,再是每列循环
for row in file_reader:
  data = []
  for column_index in range(len(header)):
    data.append(row[column_index])
  con.execute("UPDATE sales SET amount=?,date=? where customer=?;",data) 
#将修改保存到数据库
con.commit()
#查询sales表,并将命令结果赋值给一个光标对象cursor,光标对象有execute、executemany、fetchone、
#fetchmany和fetchall方法
cursor = con.execute("SELECT * FROM sales")
#返回结果集中的所有行
rows = cursor.fetchall()
print(rows)
print('………………')
for row in rows:
  output = []
  for column_index in range(len(row)):
    output.append(str(row[column_index]))
  print(output)

Spyder右下角打印出来的结果:

[('Richard Lucas', 'Notepad', 4.25, '2019-11-05'), ('Jenny Kim', 'Binder', 6.75, '2019-12-05'), ('Svetlana Crow', 'Printer', 155.75, '2019-02-03'), ('Stephen Randolph', 'Computer', 679.4, '2019-02-20')]
………………
['Richard Lucas', 'Notepad', '4.25', '2019-11-05']
['Jenny Kim', 'Binder', '6.75', '2019-12-05']
['Svetlana Crow', 'Printer', '155.75', '2019-02-03']
['Stephen Randolph', 'Computer', '679.4', '2019-02-20']

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python将xml和xsl转换为html的方法
Mar 10 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
python re库的正则表达式入门学习教程
Mar 08 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
tensorflow 变长序列存储实例
Jan 20 Python
使用 django orm 写 exists 条件过滤实例
May 20 Python
python绘制汉诺塔
Mar 01 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
Python打印特殊符号及对应编码解析
May 07 #Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 #Python
基于python计算并显示日间、星期客流高峰
May 07 #Python
Python实现动态循环输出文字功能
May 07 #Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 #Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 #Python
Pygame的程序开始示例代码
May 07 #Python
You might like
ppk谈JavaScript style属性
2008/10/10 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python MD5加密实例详解
2017/08/02 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
flask入门之表单的实现
2018/07/18 Python
python随机数分布random测试
2018/08/27 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
python异常触发及自定义异常类解析
2019/08/06 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
python判断正负数方式
2020/06/03 Python
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
劳动之星获奖感言
2014/02/01 职场文书
学校评语大全
2014/05/06 职场文书
大学生工作求职信
2014/06/23 职场文书
公司外出活动方案
2014/08/14 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
2015年财务部工作总结
2015/04/10 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
离婚纠纷代理词
2015/05/23 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
导游词之湖北武当山
2019/09/23 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers