【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 pymysql
    import 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操作知识。

总结

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3599.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Azure OpenAI 官方指南03|DALL-E 的图像生成功能与安全过滤机制

2021年1月&#xff0c;OpenAI 推出 DALL-E。这是 GPT 模型在图像生成方面的人工智能应用。其名称来源于著名画家、艺术家萨尔瓦多 • 达利&#xff08;Dal&#xff09;和机器人总动员&#xff08;Wall-E&#xff09;。DALL-E 图像生成器&#xff0c;能够直接根据文本描述生成多…

蓝桥杯真题——模拟灌溉系统

尽量每天都自己写一遍模板&#xff0c;记住模板就好写了 以下内容直接在模板内进行 基本任务&#xff1a;要求“模拟智能灌溉系统”能够实现土壤湿度测量、土壤湿度和时间显示、湿度阈值设 定及存储等基本功能。通过电位器 Rb2 输出电压信号&#xff0c;模拟湿度传感器输出信号…

常见排序算法(C语言实现)

文章目录排序介绍插入排序直接插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序递归实现Hoare版本挖坑法前后指针版本非递归实现Hoare版本挖坑法前后指针版本快排的优化三值取中小区间优化归并排序递归实现非递归实现计数排序排序算法复杂度及稳定性分析不同算…

C语言——字符串函数(2)和内存函数

(一)strtok函数dilimiters参数是个字符串&#xff0c;定义了用作分隔符的字符集合第一个参数指定一个字符串&#xff0c;它包含了0个或者多个由dilimiters字符串中一个或者多个分隔符分割的标记。strtok函数找到str中的下一个标记&#xff0c;并将其用 \0 结尾&#xff0c;返回…

第二章Vue组件化编程

文章目录模块与组件、模块化与组件化模块组件模块化组件化Vue中的组件含义非单文件组件基本使用组件注意事项使用 kebab-case使用 PascalCase组件的嵌套模板templateVueComponent一个重要的内置功能单文件组件Vue脚手架使用Vue CLI脚手架先配置环境初始化脚手架分析脚手架结构实…

vue路由的使用

地址&#xff1a; 入门 | Vue Router 一、导入vuerouter依赖包 注意&#xff0c;一定要先引入vue&#xff0c;再引入vue-router&#xff08;引入vue在引入vue-router的上面&#xff09;。不然会报错 <head><meta charset"utf-8"><title></ti…

算法:贪婪算法、分而治之

算法&#xff1a;贪婪算法、分而治之 文章目录1.贪婪算法计数硬币实例12.分而治之分割/歇征服/解决合并/合并实例23.动态规划对照实例34.基本概念算法数据定义数据对象内置数据类型派生数据类型基本操作1.贪婪算法 设计算法以实现给定问题的最佳解决方案。在贪婪算法方法中&am…

中国蚁剑AntSword实战

中国蚁剑AntSword实战1.基本使用方法2.绕过安全狗连接3.请求包修改UA特征伪造RSA流量加密4.插件使用1.基本使用方法 打开蚂蚁宝剑&#xff0c;右键添加数据&#xff1a; 输入已经上传马的路径和连接密码&#xff1a; 测试连接&#xff0c;连接成功&#xff01; GetShell了&…

【Linux】权限详解

前言首先我们先来看一下权限的概念&#xff1a;在多用户计算机系统的管理中&#xff0c;权限&#xff08;privilege&#xff09;是指某个特定的用户具有特定的系统资源使用权力&#xff0c;像是文件夹&#xff0c;特定系统指令的使用或存储量的限制。通常&#xff0c;系统管理员…

动态内存管理详细讲解

目录 1.为什么存在动态内存分配 2. 动态内存函数的介绍 2.1 malloc和free 2.2 calloc 2.3 realloc 今天要和大家分享的内容是的动态内存管理&#xff0c;我们先从他的定义入手学习。 1.为什么存在动态内存分配 我们到现在已经掌握了内存开辟的方式就是要么创建一个变量…

【差分数组】

差分数组一维差分差分数组的作用差分矩阵结语一维差分 输入一个长度为 n 的整数序列。接下来输入 m个操作&#xff0c;每个操作包含三个整数 l,r,c&#xff0c;表示将序列中 [l,r] 之间的每个数加上 c &#xff0c;请你输出进行完所有操作后的序列。 输入格式 第一行包含两个…

ArduPilot飞控之ubuntu22.04-Gazebo模拟

ArduPilot飞控之ubuntu22.04-Gazebo模拟1. 源由2. Gazebo安装2.1 ubuntu22.04系统更新2.2 安装Gazebo Garden2.3 安装ArduPilot Gazebo插件2.3.1 基础库安装2.3.2 源代码编译2.3.3 配置插件2.4 测试Gazebo Garden3. ArduPilot SITL Gazebo模拟3.1 Gazebo Garden模拟环境3.2 Ar…

大数据周会-本周学习内容总结07

目录 01【hadoop】 1.1【编写集群分发脚本xsync】 1.2【集群部署规划】 1.3【Hadoop集群启停脚本】 02【HDFS】 2.1【HDFS的API操作】 03【MapReduce】 3.1【P077- WordCount案例】 3.2【P097-自定义分区案例】 历史总结 01【hadoop】 1.1【编写集群分发脚本xsync】…

【Spring从成神到升仙系列 四】从源码分析 Spring 事务的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…

YOLOv7训练自己的数据集(手把手教你)

YOLOv7训练自己的数据集整个过程主要包括&#xff1a;环境安装----制作数据集----模型训练----模型测试----模型推理 一&#xff1a;环境安装 conda create -n yolov7 python3.8 conda activate yolov7 #cuda cudnn torch等版本就不细说了&#xff0c;根据自己的显卡配置自行…

水果新鲜程度检测系统(UI界面+YOLOv5+训练数据集)

摘要&#xff1a;水果新鲜程度检测软件用于检测水果新鲜程度&#xff0c;利用深度学习技术识别腐败或损坏的水果&#xff0c;以辅助挑拣出新鲜水果&#xff0c;支持实时在线检测。本文详细介绍水果新鲜程度检测系统&#xff0c;在介绍算法原理的同时&#xff0c;给出Python的实…

给准备面试网络工程师岗位的应届生一些建议

你听完这个故事&#xff0c;应该会有所收获。最近有一个23届毕业的大学生和我聊天&#xff0c;他现在网络工程专业大四&#xff0c;因为今年6、7月份的时候毕业&#xff0c;所以现在面临找工作的问题。不管是现在找一份实习工作&#xff0c;还是毕业后找一份正式工作&#xff0…

100天精通Python丨基础知识篇 —— 03、Python基础知识扫盲(第一个Python程序,13个小知识点)

文章目录&#x1f41c; 1、Python 初体验Pycharm 第一个程序交互式编程第一个程序&#x1f41e; 2、Python 引号&#x1f414; 3、Python 注释&#x1f985; 4、Python 保留字符&#x1f42f; 5、Python 行和缩进&#x1f428; 6、Python 空行&#x1f439; 7、Python 输出&…

Linux基础知识点总结

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…

史上最详细的改良顺序表讲解,看完不会你打我

目录 0.什么是顺序表 1.顺序表里结构体的定义 2.顺序表的初始化 3.顺序表的输入 4.增加顺序表的长度 5.1顺序表的元素查找&#xff08;按位查找&#xff09; 5.2顺序表的元素查找&#xff08;按值查找&#xff09;在顺序表进行按值查找&#xff0c;大概只能通过遍历的方…