当前位置: 首页 > news >正文

【python实操】年轻人,别用记事本保存数据了,试试数据库吧

为什么用数据库
数据库比记事本强在哪
答案很明显,你的文件很多时候都只能被一个人打开,不能被重复打开。当有几百万数据的时候,你如何去查询操作数据,速度上要快,看起来要清晰直接
数据库比我之前学的XML好在哪
XML表写索引的时候,很容易被中间断电就打断了,两个表对不上号了咋办
安全和备份处理上数据库都有自己的考虑。
在这里插入图片

在这里插入图片描述

文章目录

  • 前言
  • 数据库DB
    • 关系型
    • 非关系型
    • 新型
  • 其他数据库分类
    • 基于内存数据库
    • 基于硬盘数据库
    • 凡事不绝对
  • 访问数据库基本原理
    • ODBC
    • ADO
  • 关系型数据库
  • 连接SQLite
    • 操作步骤
    • 建立基于内存的数据库
    • 建立基于硬盘的数据库
    • 基本操作-增删改查
    • 连接MySQL
      • 在程序里面显示数据
  • NoSQL数据库
    • 连接mongoDB
      • 启动mongo
  • 总结

前言

python学习之路任重而道远,要想学完说容易也容易,说难也难。
很多人说python最好学了,但扪心自问,你会用python做什么了?
刚开始在大学学习c语言,写一个飞行棋的小游戏,用dos界面来做,真是出力不讨好。
地图要自己一点一点画出来,就像这样:

================
|				|
|				|
|===============

从此讨厌编程,不想继续学下去。每次作业应付。
算法考试,数据结构考试随便背代码,只求通过。
最后呢?我学会变成了吗?只能对一些概念侃侃而谈,但真的会几行代码,能写出实用工具吗?
答案变得模糊。
所以我们要从现在开始,学好python,不要再糊弄下去!!!

数据库DB

在这里插入图片描述

可长期存计算机里面的、有组织、可共享的数据集合。

关系型

Relational Database。
以行、列结构化关系表存储数据
SQL查询语言提供数据读写事务处理数据的多表操作,支持并发访问

非关系型

NoSQL-Not Only SQL
非行、列结构的数据结构
提供分布式处理技术,用来解决大数据处理问题
没提供统一的SQL语言类似的操作标准

新型

介于DBMS和NoSQL之间的NewSQL类的数据库
啥都能干,还有分布式处理技术

其他数据库分类

基于内存数据库

主要在内存驻留。
执行速度快,数据容易丢失

SQLite、Redis基于内存数据库

基于硬盘数据库

大规模读写速度慢,但是不容易丢失数据。

MySQL、Oracle、MongoDB基于硬盘数据库

凡事不绝对

也都支持对方的数据存储方式。
现实是复杂的。

访问数据库基本原理

在这里插入图片描述

ODBC

Open Database Connectivity
开放数据库连接,是用于访问数据库管理系统的API
支持各种OS下的数据库

ADO

ADO是微软的windows上的数据库高级接口
常堆叠在ODBC驱动程序之上
进一步简化访问技术处理过程。

关系型数据库

在这里插入图片描述

通用数据库系统:MYSQL…
数据仓库数据库系统:IBM Netezza
嵌入式数据库系统:SQLite、ThinkSQL

连接SQLite

SQLite是python自带的基于内存或者硬盘的轻量数据库系统。

操作步骤

第一步,建立应用系统与数据库的连接;
第二步,需要建立数据库实例,通俗理解是建立一个存储数据库的文件;
第三步,建立对应的表结构;
第四步,往表里写记录,读记录;
第五步,关闭与数据库的连接。

建立基于内存的数据库

import sqlite3   #导入sqlite3模块conn = sqlite3.connect(":memory:")#建立一个基于内存的数据库conn.close()        #关闭与数据库的连接

当对数据库操作完成时,建议养成及时关闭数据库连接的好习惯,避免打开数据库连接过多,消耗内存存储空间。

建立基于硬盘的数据库

import sqlite3   #导入sqlite3模块conn = sqlite3.connect("First.db")#建立一个基于硬盘的数据库实例conn.close()        #关闭与数据库的连接

基本操作-增删改查

import sqlite3
#conn=sqlite3.connect(":memory:")
conn=sqlite3.connect("First.db")
cur=conn.cursor()#建立游标
# 建立表结构对象cur.execute('''Create table fish(date text,name text,nums int,price real,Explain text)''')
#
cur.execute("insert into fish VALUES ('2018-3-22','黑狗',10,28.2,'jacky')")
cur.execute("insert into fish VALUES ('2222-3-22','无敌狗',88,28.2,'kk')")# cur.execute("select * from fish")
# for row in cur.fetchall():
#     print(row)# cur.execute("delete from fish where nums=10")conn.commit()
conn.close()

连接MySQL

首先,需要在电脑上安装pymysql这个库,可以通过pip install pymysql命令进行安装。

接着,在Python中导入该库并编写连接数据库的代码:

import pymysql# 连接数据库
mydb = pymysql.connect(host="localhost",user="root",password="123456",database="test"
)# 创建数据库表
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")# 插入数据到数据库表中
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)# 提交更改
mydb.commit()# 输出数据库中的数据
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:print(x)

以上代码实现了连接到本地主机的MySQL服务器,并且创建了一个名为"customers"的数据库表。之后,可以将数据插入到该表中,并从表中读取数据并输出到命令行窗口。

你需要将上述代码中的yourusername、yourpassword和mydatabase分别替换为你的用户名、密码和数据库名称。

在程序里面显示数据

在这里插入图片描述


def turn_property(event):getSQLDate()
def getSQLDate():import pymysqlimport sys# 连接数据库mydb = pymysql.connect(host="localhost",user="root",password="123456",database="test")# 创建数据库表mycursor = mydb.cursor()# mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")## # 插入数据到数据库表中# sql = "Select * from customers"# val = ("John", "Highway 21")# mycursor.execute(sql)# 提交更改# mydb.commit()# 输出数据库中的数据mycursor.execute("SELECT * FROM customers")myresult = mycursor.fetchall()for x in myresult:print(x)tree.insert("",0,text="kk", values=(x[0],x[1]))from tkinter import ttk
import tkinter as tk
root=tk.Tk()
# root.geometry("200x200")
# root.title("事情")
tree=ttk.Treeview(root)
tree["columns"]=("name","address")
tree.column("name",width=50)
tree.column("address",width=50)
tree.heading("name",text="名字")
tree.heading("address",text="地址")
tree.pack(side="top")
bs=tk.Button(root,text="显示数据",width=10)
bs.bind('<Button-1>',turn_property)
bs.pack(side="top")root.mainloop()# root.mainloop()

NoSQL数据库

连接mongoDB

MongoDB是一个非关系型数据库,它的数据以BSON(二进制JSON)格式存储。Python中使用pymongo库来连接MongoDB数据库,并编写相关操作的代码。

首先,需要在电脑上安装pymongo库,可以通过pip install pymongo命令进行安装。

接着,在Python中导入该库并编写连接数据库的代码:

import pymongo# 连接数据库
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]# 插入数据到数据库中
mydict = { "name": "John", "address": "Highway 37" }
x = mycol.insert_one(mydict)# 输出插入数据的ID
print(x.inserted_id)# 查询数据
for x in mycol.find():print(x)

以上代码实现了连接到本地主机的MongoDB服务器,并且创建了一个名为"mydatabase"的数据库和一个名为"customers"的集合(类似于关系型数据库中的表)。之后,可以将数据插入到该集合中,并从集合中读取数据并输出到命令行窗口。

以上代码中的mongodb://localhost:27017/表示连接到本地主机的MongoDB服务器,默认端口号为27017。你需要将该地址替换成自己所连接的MongoDB服务器地址。

另外,为了更好地管理MongoDB数据库,在Python中还可以使用mongoengine库。该库提供了更高级别的API,使得对于MongoDB数据库的操作更加简单和直接。如果对于MongoDB的使用更加深入和全面的掌握,可以进一步了解该库。

启动mongo

在Windows上简单启动MongoDB,可以按照以下步骤:

  1. 下载MongoDB的Windows安装程序:从MongoDB官网下载Windows版的安装程序(msi格式),下载后运行安装程序进行安装。

  2. 配置MongoDB的数据存储目录:在安装完成后,需要手动配置MongoDB的数据存储目录。默认情况下,MongoDB将存储数据在C:\data\db目录下,如果该目录不存在,需要手动创建。

  3. 启动MongoDB服务:在安装目录中找到bin目录,其中包含了MongoDB的启动程序。用Windows命令提示符(CMD)进入该目录,并执行以下命令开启MongoDB服务:

mongod.exe --dbpath="C:\data\db"

其中,“–dbpath”参数指定了数据存储目录的路径。例如,以上命令中指定了C:\data\db目录为数据存储目录。

  1. 连接MongoDB服务器:在MongoDB服务启动成功后,在另一个命令提示符窗口不需要关闭服务,执行以下命令连接到MongoDB服务器:
mongo

这将打开一个MongoDB shell窗口,可以在该窗口内执行相关的MongoDB操作命令。

以上就是在Windows上启动MongoDB以及连接MongoDB服务器的简单步骤,适合于初学者快速入门。当然,在实际使用过程中,还需要掌握更加深入和全面的MongoDB操作知识。

总结

不管怎么样,我们要在我们的项目中应用数据库技术。
不要把文件数据随便上传一些、应付了事!

在这里插入图片描述

相关文章:

【python实操】年轻人,别用记事本保存数据了,试试数据库吧

为什么用数据库&#xff1f; 数据库比记事本强在哪&#xff1f; 答案很明显&#xff0c;你的文件很多时候都只能被一个人打开&#xff0c;不能被重复打开。当有几百万数据的时候&#xff0c;你如何去查询操作数据&#xff0c;速度上要快&#xff0c;看起来要清晰直接 数据库比我…...

铁威马NAS教程之利用docker快速搭建个人在线书库

这是一个基于Calibre的简单的图书管理系统&#xff0c;支持在线阅读。主要特点是&#xff1a;美观的界面、支持多用户、支持在线阅读、支持邮件推送、支持OPDS、支持一键安装&#xff0c;网页版初始化配置&#xff0c;轻松启动网站等等。 那么&#xff0c;如何利用docker快速搭…...

504. 七进制数——【Leetcode每日一题】

504. 七进制数 给定一个整数 num&#xff0c;将其转化为 7 进制&#xff0c;并以字符串形式输出。 示例 1: 输入: num 100 输出: “202” 示例 2: 输入: num -7 输出: “-10” 提示&#xff1a; −107<num<107-10^7 < num < 10^7−107<num<107 思路&…...

RocketMQ源码(24)—DefaultMQPushConsumer延迟消息源码

基于RocketMQ release-4.9.3&#xff0c;深入的介绍了DefaultMQPushConsumer延迟消息源码。 文章目录1 load加载延迟消息数据1.1 parseDelayLevel解析延迟等级2 start启动调度消息服务3 DeliverDelayedMessageTimerTask投递延迟消息任务3.1 executeOnTimeup执行延迟消息投递3.2…...

计算机视觉知识点(一)——交并比(IoU)及其若干改进

交并比&#xff08;IoU&#xff09;前言IoU公式及示意图IoU Loss缺点GIoU Loss公式及示意图缺点DIoU公式及示意图CIoU前言 目标检测是一个常见的计算机视觉任务&#xff0c;在目标检测任务中&#xff0c;交并比作为评判检测框的标准具有很重要的意义&#xff0c;在实际的应用中…...

一篇文章教你从零到一搭建自动化测试框架(附视频教程+源码)

目录 前言 1. 什么是自动化测试框架&#xff1f; 2. 没有万能的测试框架&#xff0c;适合自己项目的&#xff0c;能提高工作效率的就是好框架。 3. 设计框架的思路&#xff1a; 4.如何开展自动化测试 前言 关于测试框架的好处&#xff0c;比如快速回归提高测试效率&#x…...

【备战蓝桥杯】----01背包问题(动态规划)

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

Golang1.18新特性介绍——泛型

社区长期高呼的泛型特性在Golang 1.18中终于正式发布&#xff0c;Go泛型实现与传统的C有较大差异&#xff0c;更像Rust的泛型实现。本文详细介绍Golang泛型及其特性&#xff0c;包括泛型语法、类型参数、类型约束、类型近似以及constraints包提供内置类型等。 最近写Dao代码&am…...

【SpringBoot17】SpringBoot中使用Quartz管理定时任务

定时任务在系统中用到的地方很多&#xff0c;例如每晚凌晨的数据备份&#xff0c;每小时获取第三方平台的 Token 信息等等&#xff0c;之前我们都是在项目中规定这个定时任务什么时候启动&#xff0c;到时间了便会自己启动&#xff0c;那么我们想要停止这个定时任务的时候&…...

杨辉三角形 (蓝桥杯) JAVA

目录题目描述&#xff1a;暴力破解&#xff08;四成&#xff09;&#xff1a;二分法破解&#xff08;满分&#xff09;&#xff1a;题目描述&#xff1a; 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如…...

AI制药 - AlphaFold Multimer 的 MSA Pairing 源码

目前最新版本是v2.3.1&#xff0c;2023.1.12 AlphaFold multimer v1 于 2021 年 7 月发布&#xff0c;同时发表了一篇描述其方法和结果的论文。AlphaFold multimer v1 使用了与 AlphaFold 单体相同的模型结构和训练方法&#xff0c;但增加了一些特征和损失函数来处理多条链。Al…...

TitanIDE:云原生开发到底强在哪里?

原文作者&#xff1a;行云创新技术总监 邓冰寒 引言 是一种新的软件开发方法&#xff0c;旨在构建更可靠、高效、弹性、安全和可扩展的应用程序。与传统的应用程序开发方式不同&#xff0c;云原生是将开发环境完全搬到云端&#xff0c;构建一站式的云原生开发环境。云原生的开…...

单片机常用完整性校验算法

一、前言 单片机在开发过程中经常会遇到大文件传输&#xff0c;或者大量数据传输&#xff0c;在一些工业环境下&#xff0c;数据传输并不是很稳定&#xff0c;如何检验数据的完整性就是个问题&#xff0c;这里简单介绍一下单片机常用的几种数据完整性校验方法。 二、CheckSum校…...

Anaconda 的安装配置及依赖项的内外网配置

在分享anaconda 的安装配置及使用前&#xff0c;我们必须先明白anaconda是什么&#xff1b;Anaconda是一个开源的Python发行版本。两者区别在于前者是一门编程语言&#xff0c;后者相当于编程语言中的工具包。 由于python自身缺少numpy、matplotlib、scipy、scikit-learn等一系…...

p84 CTF夺旗-PHP弱类型异或取反序列化RCE

数据来源 文章参考 本课重点&#xff1a; 案例1&#xff1a;PHP-相关总结知识点-后期复现案例2&#xff1a;PHP-弱类型对比绕过测试-常考点案例3&#xff1a;PHP-正则preg_match绕过-常考点案例4&#xff1a;PHP-命令执行RCE变异绕过-常考点案例5&#xff1a;PHP-反序列化考题…...

2022财报逆转,有赞穿透迷雾实现突破

2022年&#xff0c;商家经营面临困难。但在一些第三方服务商的帮助下&#xff0c;也有商家取得了逆势增长。 2023年3月23日&#xff0c;有赞发布2022年业绩报告&#xff0c;它帮助许多商家稳住了一整年的经营。2022年&#xff0c;有赞门店SaaS业务的GMV达到425亿元&#xff0c…...

蓝桥杯 - 求组合数【C(a,b)】+ 卡特兰数

文章目录&#x1f4ac;前言885. 求组合数 I C(m,n) 【dp】886 求组合数 II 【数据大小10万级别】 【费马小定理快速幂逆元】887. 求组合数 III 【le18级别】 【卢卡斯定理 逆元 快速幂 】888.求组合数 IV 【没有%p -- 高精度算出准确结果】 【分解质因数 高精度乘法 --只用一…...

膳食真菌在癌症免疫治疗中的作用: 从肠道微生物群的角度

谷禾健康 癌症是一种恶性肿瘤&#xff0c;它可以发生在人体的任何部位&#xff0c;包括肺、乳房、结肠、胃、肝、宫颈等。根据世界卫生组织的数据&#xff0c;全球每年有超过1800万人被诊断出患有癌症&#xff0c;其中约有1000万人死于癌症。癌症已成为全球范围内的主要健康问题…...

怎么将模糊的照片变清晰

怎么将模糊的照片变清晰?珍贵的照片每个人都会有&#xff0c;而遇到珍贵的照片变模糊了&#xff0c;相信会让人很苦恼的。那么有没有办法可以解决呢?答案是有的&#xff0c;我们可以用工具让模糊的照片变得清晰。下面就来分享一些让模糊的照片变清晰的方法&#xff0c;有兴趣…...

【软件测试】基础知识第一篇

文章目录一. 什么是软件测试二. 测试和调试的区别三. 什么是测试用例四. 软件的生命周期五. 软件测试的生命周期一. 什么是软件测试 软件测试就是验证软件产品特性是否满足用户的需求。 那需求又是什么呢&#xff1f;在多数软件公司&#xff0c;会有两种需求&#xff0c;一种…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...