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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 2核4GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 【python实操】年轻人,别用记事本保存数据了,试试数据库吧

为什么用数据库

数据库比记事本强在哪

答案很明显,你的文件很多时候都只能被一个人打开,不能被重复打开。当有几百万数据的时候,你如何去查询操作数据,速度上要快,看起来要清晰直接

数据库比我之前学的XML好在哪

XML表写索引的时候,很容易被中间断电就打断了,两个表对不上号了咋办

安全和备份处理上数据库都有自己的考虑。


前言

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

总结

不管怎么样,我们要在我们的项目中应用数据库技术。

不要把文件数据随便上传一些、应付了事!

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
16小时前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
5 1
|
2天前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
10 0
|
2天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
2天前
|
数据采集 数据处理 开发者
Python 中的数据处理技巧:高效数据操作的艺术
Python 在数据处理方面表现卓越,为开发者提供了丰富的工具和库以简化数据操作。在本文中,我们将探讨 Python 中数据处理的一些技巧,包括数据清洗、数据转换以及优化数据操作的最佳实践。通过掌握这些技巧,您可以在 Python 中更加高效地处理和分析数据。
|
3天前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
9 0
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
4天前
|
开发者 索引 Python
Python中调整两列数据顺序的多种方式
Python中调整两列数据顺序的多种方式
20 0
|
4天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
12 1
|
4天前
|
数据可视化 Python
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
|
4天前
|
数据处理 Python
Python中每个字段增加多条数据的高效方法
Python中每个字段增加多条数据的高效方法
10 1