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实现二分查找算法实例
May 26 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
Python 爬虫图片简单实现
Jun 01 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
python实现自动发送邮件
Jun 20 Python
python简单操作excle的方法
Sep 12 Python
对python中的argv和argc使用详解
Dec 15 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
Pytorch: 自定义网络层实例
Jan 07 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 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
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python对于requests的封装方法详解
2019/01/03 Python
详解python的argpare和click模块小结
2019/03/31 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
Pytorch之contiguous的用法
2019/12/31 Python
Python读写Excel表格的方法
2021/03/02 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
高中生学习生活的自我评价
2013/11/27 职场文书
低碳环保演讲稿
2014/08/28 职场文书
秋冬农业生产标语
2014/10/09 职场文书
研讨会通知
2015/04/27 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
2016年元旦致辞
2015/08/01 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python