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

服装公司网站规划建设上海礼品定制网站

服装公司网站规划建设,上海礼品定制网站,wordpress cc,网站空间会过期吗一、sqlite3#xff08;轻量级本地数据库#xff09; sqlite3 是 Python 内置的模块#xff0c;用于操作 SQLite 数据库。 SQLite 是一个轻量级、零配置的关系型数据库系统#xff0c;整个数据库保存在一个文件中#xff0c;适合小型项目和本地存储。 SQLite 不需要安装…一、sqlite3轻量级本地数据库 sqlite3 是 Python 内置的模块用于操作 SQLite 数据库。 SQLite 是一个轻量级、零配置的关系型数据库系统整个数据库保存在一个文件中适合小型项目和本地存储。 SQLite 不需要安装服务器打开即可用跨平台。 Python 内置了 sqlite3 模块无需安装。 1. 主要特点 特点描述零配置不需要安装数据库服务器跨平台Windows、Linux、Mac 通用单文件存储数据库是一个 .db 文件SQL 兼容性强支持大部分 SQL 语法嵌入式可嵌入任何应用无需联网适合本地小项目如桌面应用、原型系统、小型管理系统 2. 基本使用流程 2.1. 导入模块 连接数据库 import sqlite3# 自动创建/连接数据库文件 conn sqlite3.connect(example.db) # 文件名可自定义2.2. 创建游标对象操作数据库 cursor conn.cursor()2.3. 创建表如果不存在 cursor.execute( CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER ) )2.4. 插入数据 cursor.execute(INSERT INTO users (name, age) VALUES (?, ?), (Alice, 25))使用 ? 占位符是为了防止 SQL 注入攻击。 2.5. 查询数据 cursor.execute(SELECT * FROM users) rows cursor.fetchall() for row in rows:print(row)2.6. 更新与删除数据 cursor.execute(UPDATE users SET age ? WHERE name ?, (30, Alice)) cursor.execute(DELETE FROM users WHERE name ?, (Alice,))2.7. 提交事务 关闭连接 conn.commit() # 一定要 commit 否则数据不会保存 conn.close()3. 事务机制 SQLite 支持事务默认处于自动提交模式但你也可以手动控制 conn sqlite3.connect(example.db) cursor conn.cursor()try:cursor.execute(BEGIN)cursor.execute(UPDATE users SET age age 1)conn.commit() # 成功就提交 except Exception as e:conn.rollback() # 出错就回滚print(错误, e)conn.close()4. fetch 方法详解 fetchone() # 获取一行结果 fetchall() # 获取所有结果 fetchmany(n) # 获取 n 行5. 数据库文件位置 默认会在当前 Python 脚本目录下生成 .db 文件。你可以自定义路径 conn sqlite3.connect(rC:\Users\你的目录\mydata.db)6.  一些注意事项 问题原因/解决办法忘记 conn.commit()改动不会保存多线程写冲突SQLite 本质是单线程写慎用多线程并发写入类型不严格SQLite 是动态类型系统不会报类型错如 age 可以写成 abcSQL 注入风险尽量使用 ? 占位符不拼接 SQL 字符串同时打开多个连接会出现锁建议用单连接或 with 语句管理资源 7. 用 with 自动关闭连接和提交事务推荐 with sqlite3.connect(example.db) as conn:cursor conn.cursor()cursor.execute(INSERT INTO users (name, age) VALUES (?, ?), (Tom, 22))conn.commit()8. 高级功能 使用 row_factory 获取字典而不是元组 conn sqlite3.connect(example.db) conn.row_factory sqlite3.Row cursor conn.cursor()cursor.execute(SELECT * FROM users) row cursor.fetchone() print(dict(row)) # {id: 1, name: Tom, age: 22}导入 CSV 文件、使用索引、JOIN 多表等高级 SQL 特性SQLite 全部支持。 二、MySQL主流数据库 MySQL 是目前最流行的开源关系型数据库适用于各类 Web 项目支持高并发、高性能访问。 Python 操作 MySQL 通常有两种主流库 库名优点pymysql纯 Python 实现使用最广轻量好用mysql-connector-python官方提供稳定性高 以下使用 pymysql 为主讲解。 1. 环境准备 pip install pymysql安装 MySQL 数据库 Windows 可以安装 MySQL Community Edition macOS 可用 brew install mysql Linux 可以使用 apt 或 yum 下载地址https://downloads.mysql.com/archives/workbench/ 确保运行后可以通过以下方式登录 mysql -u root -p2. 连接数据库 import pymysqlconn pymysql.connect(hostlocalhost,userroot,password你的密码,databasetestdb,port3306, # 默认端口charsetutf8mb4 )cursor conn.cursor()3. 建表和插入数据 创建表 cursor.execute( CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT ) )插入数据 cursor.execute(INSERT INTO users (name, age) VALUES (%s, %s), (Alice, 25)) conn.commit()4. 查询数据 查询所有 cursor.execute(SELECT * FROM users) rows cursor.fetchall()for row in rows:print(row)查询一条 cursor.execute(SELECT * FROM users WHERE name %s, (Alice,)) row cursor.fetchone() print(row)5. 更新与删除 # 更新 cursor.execute(UPDATE users SET age %s WHERE name %s, (30, Alice))# 删除 cursor.execute(DELETE FROM users WHERE name %s, (Alice,))conn.commit()6. 事务处理 try:cursor.execute(BEGIN)cursor.execute(UPDATE users SET age age 1)conn.commit() except Exception as e:conn.rollback()print(事务回滚, e)7. 批量操作 data [(Tom, 20), (Jack, 22), (Lily, 18)] cursor.executemany(INSERT INTO users (name, age) VALUES (%s, %s), data) conn.commit()8. 关闭资源 cursor.close() conn.close()或者使用 with 管理 with pymysql.connect(...) as conn:with conn.cursor() as cursor:cursor.execute(SELECT * FROM users)9. 常见问题 问题解决方案报错Access denied检查用户名、密码是否正确用户是否有访问权限中文乱码使用 charsetutf8mb4建表时列加 CHARACTER SET utf8mb4插入 SQL 注入问题使用 %s 占位符不拼接 SQLMySQL server has gone away长连接断了建议短连接或设置 wait_timeout 10. 进阶功能 使用 DictCursor 获取字典而不是元组 cursor conn.cursor(pymysql.cursors.DictCursor) cursor.execute(SELECT * FROM users) row cursor.fetchone() print(row[name]) # 字典形式使用连接池推荐中大型项目 使用 DBUtils 实现连接池 pip install DBUtilsfrom DBUtils.PooledDB import PooledDBpool PooledDB(creatorpymysql,maxconnections5,hostlocalhost,userroot,password123456,databasetestdb,charsetutf8mb4 )conn pool.connection() cursor conn.cursor()11. 项目目标用户注册与登录系统 功能包括 用户注册用户名密码用户登录验证用户名和密码数据存入 MySQL 数据库密码加密存储用 hashlib 准备工作 安装 pymysql pip install pymysql创建数据库和表进入 MySQL CREATE DATABASE IF NOT EXISTS userdb CHARACTER SET utf8mb4;USE userdb;CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) UNIQUE NOT NULL,password_hash VARCHAR(128) NOT NULL );完整示例代码含注册和登录功能 import pymysql import hashlib# 数据库连接参数 conn pymysql.connect(hostlocalhost,userroot,password你的MySQL密码,databaseuserdb,charsetutf8mb4 )cursor conn.cursor()# 密码加密函数MD5 示例 def hash_password(password):return hashlib.md5(password.encode()).hexdigest()# 注册功能 def register(username, password):cursor.execute(SELECT * FROM users WHERE username %s, (username,))if cursor.fetchone():print(用户名已存在)returnhashed_pwd hash_password(password)cursor.execute(INSERT INTO users (username, password_hash) VALUES (%s, %s), (username, hashed_pwd))conn.commit()print(注册成功)# 登录功能 def login(username, password):hashed_pwd hash_password(password)cursor.execute(SELECT * FROM users WHERE username %s AND password_hash %s, (username, hashed_pwd))if cursor.fetchone():print(登录成功)else:print(登录失败用户名或密码错误)# 测试运行 while True:print(\n 用户系统 )print(1. 注册)print(2. 登录)print(0. 退出)choice input(请输入选项)if choice 1:u input(用户名)p input(密码)register(u, p)elif choice 2:u input(用户名)p input(密码)login(u, p)elif choice 0:breakelse:print(无效的选项)# 关闭连接 cursor.close() conn.close()运行效果 用户系统 1. 注册 2. 登录 0. 退出 请输入选项1 用户名alice 密码123456 注册成功 用户系统 1. 注册 2. 登录 0. 退出 请输入选项2 用户名alice 密码123456 登录成功三、PostgreSQL PostgreSQL简称 Postgres是一个功能强大、开源的 关系型数据库管理系统RDBMS以 稳定性强、功能丰富 著称被广泛用于金融、科研、大数据等领域。 1. PostgreSQL 的核心特点 特性描述开源免费完全开源企业级能力全球社区活跃维护SQL 标准支持好支持大量 SQL 标准语法、窗口函数、CTE 等复杂查询数据完整性强支持外键、唯一性、检查约束、触发器等支持 JSON / XML / GIS可当半结构化数据库文档型/地理型数据库使用扩展性强支持插件、扩展如 postgis、pgvector支持事务和并发完整的 ACID 特性MVCC多版本并发控制确保并发性能 2. PostgreSQL 安装 Windows / macOS 官网下载安装包PostgreSQL: Downloads Ubuntu sudo apt update sudo apt install postgresql postgresql-contrib默认会创建一个系统用户postgres初始登录 sudo -u postgres psql3. Python 操作 PostgreSQL —— 使用 psycopg2 安装 pip install psycopg2如果安装失败可尝试 pip install psycopg2-binary4. 基本使用示例增删查改 连接数据库 import psycopg2conn psycopg2.connect(dbnameyourdb,useryouruser,passwordyourpass,hostlocalhost,port5432 )cursor conn.cursor()创建表 cursor.execute( CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY,username VARCHAR(50) UNIQUE NOT NULL,age INT ) ) conn.commit()插入数据 cursor.execute(INSERT INTO users (username, age) VALUES (%s, %s), (Alice, 23)) conn.commit()查询数据 cursor.execute(SELECT * FROM users) rows cursor.fetchall() for row in rows:print(row)更新 删除 cursor.execute(UPDATE users SET age %s WHERE username %s, (30, Alice)) cursor.execute(DELETE FROM users WHERE username %s, (Alice,)) conn.commit()关闭连接 cursor.close() conn.close()5. 与mysql技术对比 特性MySQLPostgreSQL性能写入快轻量级适合读多写少更适合复杂查询和写多读少的情况事务 ACID支持InnoDB 引擎更严格、全面的 ACID 支持扩展性较差定制性低非常强支持自定义函数、类型等JSON 支持有但较弱原生 JSONB 支持功能强大GIS 支持有更强PostGIS 非常强大 四、SQLAlchemyORM框架 SQLAlchemy 介绍 SQLAlchemy 是 Python 中最流行的 ORM对象关系映射框架它将数据库中的数据表映射到 Python 类并使得我们可以通过 Python 代码对数据库进行增删改查CRUD操作而不必直接编写 SQL 语句。SQLAlchemy 提供了高度抽象化的 API使得开发者在处理数据库操作时更加简洁、直观。 SQLAlchemy 主要有两个核心部分 SQLAlchemy Core提供低级别的数据库交互 API适合需要完全控制 SQL 生成和执行的高级用户。 SQLAlchemy ORM建立在 SQLAlchemy Core 之上是高层的对象关系映射工具帮助我们更轻松地通过 Python 类与数据库交互。 SQLAlchemy ORM 是大多数开发者使用的部分。 1. 核心概念 模型Model 和 表Table在 SQLAlchemy 中表格Table是数据库中的实际表而模型Model是 Python 类它通过映射将数据库表的列映射为类的属性。 SessionSession 是数据库连接的管理者负责管理对象的生命周期和数据的持久化。通过 Session 对象我们可以添加、删除、更新数据库中的记录并提交commit这些操作。 QueryQuery 对象用于执行数据库查询。通过 Query 对象你可以过滤数据、选择字段、排序、聚合等操作。 2. 基础示例 通过一个简单的 用户管理系统 来演示如何使用 SQLAlchemy 进行操作。 1安装 SQLAlchemy 和数据库驱动 pip install sqlalchemy pip install psycopg2 # PostgreSQL 驱动若使用 MySQL换成 pymysql2定义模型 首先我们定义数据库表和映射的 Python 类。 from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmakerBase declarative_base() # 声明基础类# 定义一个 User 表对应的 Python 类 class User(Base):__tablename__ users # 数据库中的表名id Column(Integer, primary_keyTrue)name Column(String)age Column(Integer)# 创建数据库引擎SQLite 本地数据库 engine create_engine(sqlite:///example.db) # PostgreSQL/MySQL 需要替换数据库URL# 创建数据库表 Base.metadata.create_all(engine)Base 是一个基类所有的模型都应该继承它。 User 类表示了数据库中的一个 users 表并定义了表的结构字段。 engine 是数据库的引擎负责连接数据库。我们使用 sqlite:///example.db 创建了一个本地 SQLite 数据库你可以根据需要替换为其他数据库连接字符串。 3创建 Session 和 数据库操作 然后我们使用 Session 来进行数据的增删改查。 # 创建 Session 类 Session sessionmaker(bindengine) session Session()# 插入数据 new_user User(nameAlice, age25) session.add(new_user) session.commit() # 提交到数据库# 查询数据 users session.query(User).filter_by(nameAlice).all() print(users)# 更新数据 user_to_update session.query(User).filter_by(nameAlice).first() user_to_update.age 26 session.commit()# 删除数据 user_to_delete session.query(User).filter_by(nameAlice).first() session.delete(user_to_delete) session.commit()# 关闭 Session session.close()插入数据通过 session.add() 方法添加新用户然后使用 session.commit() 提交到数据库。 查询数据通过 session.query() 方法查询数据并使用 .filter_by() 过滤条件。 更新数据查询到用户后直接修改其属性再调用 session.commit() 提交。 删除数据通过 session.delete() 删除查询到的对象。 4.通过 SQLAlchemy 操作数据库 以上的操作都是基于 Python 类的操作但 SQLAlchemy 会自动生成对应的 SQL 语句如 INSERT, SELECT, UPDATE, DELETE 等。 例如当我们执行 users session.query(User).filter_by(nameAlice).all()SQLAlchemy 会将其转化为 SELECT * FROM users WHERE name Alice;3. 复杂查询示例 SQLAlchemy 也支持复杂的查询操作比如排序、聚合、关联查询等。 1排序 users session.query(User).order_by(User.age.desc()).all() # 按照年龄降序排序2聚合 from sqlalchemy import funcavg_age session.query(func.avg(User.age)).scalar() # 获取所有用户的平均年龄 print(fAverage age: {avg_age})3关联查询 假设我们有一个 Post 类和 User 类用户可以拥有多个文章 class Post(Base):__tablename__ postsid Column(Integer, primary_keyTrue)title Column(String)user_id Column(Integer, ForeignKey(users.id))user relationship(User, back_populatesposts)User.posts relationship(Post, order_byPost.id, back_populatesuser)现在可以通过 SQLAlchemy 轻松进行关联查询 # 查询某个用户的所有文章 user session.query(User).filter_by(nameAlice).first() for post in user.posts:print(post.title)4. SQLAlchemy 高级特性 1多表查询与联接 SQLAlchemy 支持内连接JOIN、外连接OUTER JOIN等操作可以方便地处理复杂的多表查询。 session.query(User, Post).join(Post).filter(User.id Post.user_id).all()2事务管理 SQLAlchemy 允许手动控制事务使用 session.begin() 和 session.rollback() 可以进行显式的事务控制。 try:session.begin()# 一些数据库操作session.commit() except:session.rollback()3数据库迁移工具Alembic SQLAlchemy 本身不提供数据库迁移功能但 Alembic 是其官方支持的迁移工具它可以帮助我们在数据库模型发生变化时同步数据库结构。 5. 总结 简化数据库操作SQLAlchemy ORM 提供了高层次的接口来简化数据库的操作我们可以通过 Python 类来表示数据库表进行增删改查避免了手写 SQL 语句。 支持复杂查询SQLAlchemy 支持排序、聚合、联接查询等复杂数据库操作同时可以自动生成对应的 SQL 语句。 跨数据库兼容性通过 SQLAlchemy你可以很容易地将项目从一个数据库迁移到另一个数据库比如从 SQLite 到 MySQL、PostgreSQL。 如果希望进行数据库操作时不想编写太多 SQLSQLAlchemy 是一个非常合适的选择尤其是在项目需要频繁与数据库交互时。 五、Redis缓存数据库 RedisRemote Dictionary Server 是一个开源的、基于内存的高性能 键值对key-value 数据库常用于缓存、消息队列、实时统计等场景。 它具有如下特点 极快的访问速度基于内存读取速度可达 10 万 QPS每秒查询数。 多种数据结构支持字符串、列表、集合、哈希、位图、有序集合等。 丰富的应用场景分布式锁、登录状态缓存、排行榜、限流器等。 支持持久化内存数据可以保存到磁盘。 主从复制、集群模式可以实现高可用、高并发的集群部署。 1. Redis 支持的数据类型 类型示例用途特点介绍String缓存页面内容、token、验证码最基础的类型支持字符串、数字List消息队列、任务队列有序列表可从头/尾插入/弹出Set标签系统、去重集合无序不重复元素集合Hash存储用户信息、商品信息类似字典key - field - valueZSet排行榜、推荐系统有序集合元素分数scoreBitmap用户签到、状态记录位操作适合大量布尔数据HyperLogLog统计 UV/去重用户数近似去重内存占用极低 2. Redis 安装与启动 如果是 Linux 用户 sudo apt install redis redis-server # 启动服务也可以使用 Docker 安装 docker run -d --name redis -p 6379:6379 redis客户端连接 redis-cli # 进入命令行3. 使用 Python 操作 Redisredis-py 1安装 Python 客户端 pip install redis2连接 Redis import redis# 创建 Redis 连接对象 r redis.StrictRedis(hostlocalhost, # Redis 服务器地址本地port6379, # Redis 端口默认db0, # 使用的数据库编号0 ~ 15decode_responsesTrue # 自动将 bytes 解码为 str )3.字符串操作String # 设置键值 r.set(username, alice)# 获取值 print(r.get(username)) # 输出: alice# 设置键值并指定过期时间单位秒 r.setex(code, 60, 123456) # 设置验证码有效期60秒# 自增、自减 r.set(count, 10) r.incr(count) # 1 r.decr(count) # -14哈希操作Hash # 设置字段 r.hset(user:1, name, Bob) r.hset(user:1, age, 25)# 获取字段 print(r.hget(user:1, name)) # 输出: Bob# 获取所有字段 print(r.hgetall(user:1)) # {name: Bob, age: 25}5列表操作List # 从左侧插入元素类似栈 r.lpush(queue, task1, task2)# 从右侧弹出元素 task r.rpop(queue) print(task) # 输出: task1 或 task2# 获取所有元素 print(r.lrange(queue, 0, -1))6集合操作Set # 添加元素 r.sadd(tags, python, redis, flask)# 获取所有元素无序 print(r.smembers(tags))# 判断是否存在某个元素 print(r.sismember(tags, redis)) # True or False7有序集合操作ZSet # 添加元素和分数 r.zadd(rank, {Alice: 90, Bob: 95})# 获取排行榜按分数从高到低 print(r.zrevrange(rank, 0, -1, withscoresTrue))# 增加某个成员的分数 r.zincrby(rank, 5, Alice)8键的通用操作 # 设置过期时间 r.expire(username, 30) # 30秒后自动过期# 查看剩余时间 print(r.ttl(username))# 删除键 r.delete(username)9事务操作可选 pipe r.pipeline() pipe.set(a, 1) pipe.set(b, 2) pipe.execute() # 一起提交类型方法说明Stringset, get, incr, setex普通键值对、计数器Hashhset, hget, hgetall结构化字段存储Listlpush, rpop, lrange队列 / 栈结构Setsadd, smembers, sismember去重集合、标签系统ZSetzadd, zrevrange, zincrby排行榜、有序存储 4. Redis 与数据库的区别 项目Redis缓存数据库MySQL/PostgreSQL关系数据库主要用途高速缓存、统计、消息、锁、排行榜数据存储、结构化查询、事务存储位置内存可持久化磁盘查询方式按键访问速度极快支持复杂 SQL 查询一致性弱默认无事务强一致性支持事务、ACID数据结构丰富String、List、ZSet等固定结构表结构 Redis 是内存级数据库适合高性能读写 临时数据处理不适合永久性存储数据库负责业务核心数据Redis 更像是“加速器”。 5. 举例 爬取一个网站的数据并将这些数据缓存到 Redis 中 import redis import requests from bs4 import BeautifulSoup# 连接 Redis r redis.StrictRedis(hostlocalhost, port6379, db0, decode_responsesTrue)# 爬取网页 url https://quotes.toscrape.com response requests.get(url) soup BeautifulSoup(response.text, html.parser)# 获取所有名言和作者 quotes soup.find_all(div, class_quote) data []for quote in quotes:text quote.find(span, class_text).textauthor quote.find(small, class_author).textdata.append({text: text, author: author})# 将数据存入 Redis for idx, quote in enumerate(data):key fquote:{idx1}r.hset(key, mappingquote)# 查看存入 Redis 的数据 for idx in range(1, len(data)1):key fquote:{idx}print(r.hgetall(key)) # 获取整个哈希说明 爬取数据 我们从 https://quotes.toscrape.com 网站上抓取了所有名言和作者。存储数据 将每一条名言存储为一个 Redis 哈希对象键是 quote:{idx}值是该名言的内容和作者。Redis 操作 使用 hset 存储数据并通过 hgetall 获取存储的数据。 后续操作 如果数据量很大可以考虑分页抓取存入多个 Redis 键。如果要处理更复杂的数据可以考虑用 Redis 的列表、集合或有序集合进行存储。如果是需要缓存可以使用 Redis 的过期时间设置例如使用 setex 方法设置过期时间。 六、MongoDB MongoDB 是一个开源的 NoSQL 数据库使用文档Document形式存储数据而非传统的关系数据库中的表Table和行Row。它是面向文档的数据库广泛应用于需要高性能、大数据量的应用程序。 MongoDB 采用了文档存储结构数据以 BSONBinary JSON格式存储。这使得它比关系数据库更具灵活性可以存储复杂的嵌套数据和不同格式的数据。 特点 文档存储 数据以 BSON 格式存储支持嵌套数据结构灵活性更高。 高可扩展性 支持横向扩展sharding可通过分片技术将数据分布在不同的服务器上。 高性能 支持高效的读写操作适用于高吞吐量和高并发的应用。 灵活的 schema 数据库中的集合不需要固定的 schema允许不同文档具有不同的字段。 原子操作 支持原子操作可以对单一文档执行更新、删除等操作。 1. MongoDB 数据模型 MongoDB 使用以下数据结构 数据库Database 存储数据的容器一个 MongoDB 实例可以包含多个数据库。 集合Collection 类似于关系数据库中的表一个数据库可以有多个集合。 文档Document 数据的最小单位类似于关系数据库中的行。文档是 BSON 格式的数据类似 JSON每个文档都有唯一的 _id 字段。 示例MongoDB 数据模型 {_id: ObjectId(5f45c3a735e56a3b59e4906d),name: Alice,age: 25,address: {street: 123 Main St,city: New York} }_id每个文档都有一个唯一的 _id 字段如果没有指定MongoDB 会自动生成。 address嵌套文档表示地址信息。 2. MongoDB 安装与启动 安装 MongoDB Linux 可以使用包管理器如 apt、yum安装 MongoDB。 sudo apt update sudo apt install mongodbWindows 使用 MongoDB 官网提供的安装包按照向导完成安装。 官网https://www.mongodb.com/try/download/community-edition/releases/archive macOS 使用 brew 安装 MongoDB。 brew tap mongodb/brew brew install mongodb-community5.0启动 MongoDB 启动 MongoDB 服务 mongod # 启动数据库服务器启动 MongoDB 客户端 mongo # 进入 MongoDB shell3. 使用 Python 操作 MongoDB 安装 Python MongoDB 客户端库 pymongo pip install pymongo1连接 MongoDB from pymongo import MongoClient# 连接到本地 MongoDB 服务 client MongoClient(localhost, 27017)# 获取数据库 db client[mydatabase] # mydatabase 是数据库名称# 获取集合 collection db[users] # users 是集合名称2插入数据 # 插入单个文档 user {name: Alice,age: 25,address: {street: 123 Main St,city: New York} }# 插入文档到集合 collection.insert_one(user)# 插入多个文档 users [{name: Bob, age: 30},{name: Charlie, age: 35} ] collection.insert_many(users)3查询数据 查找单个文档 # 查找第一个匹配的文档 user collection.find_one({name: Alice}) print(user)查找多个文档 # 查找所有年龄大于 30 的用户 users collection.find({age: {$gt: 30}}) for user in users:print(user)使用条件查询例如年龄大于 30 且地址为 New York # 使用条件查询 users collection.find({age: {$gt: 30},address.city: New York })for user in users:print(user)4更新数据 更新单个文档 # 更新文档 collection.update_one({name: Alice}, # 查询条件{$set: {age: 26}} # 更新内容 )更新多个文档 # 更新多个文档 collection.update_many({age: {$gt: 30}}, # 查询条件{$set: {status: senior}} # 更新内容 )5删除数据 删除单个文档 # 删除一个文档 collection.delete_one({name: Alice})删除多个文档 # 删除多个文档 collection.delete_many({age: {$lt: 30}})6索引操作 为了加速查询MongoDB 提供了索引功能。你可以为集合的字段创建索引。 # 为字段 name 创建索引 collection.create_index([(name, 1)]) # 1 表示升序-1 表示降序4. MongoDB 与 关系数据库的区别 特性MongoDB关系数据库如 MySQL、PostgreSQL数据模型面向文档BSON面向表行列数据存储灵活的 schema可变的字段固定的 schema字段必须预定义扩展性水平扩展分片垂直扩展增加硬件资源查询语言MongoDB 查询语言MongoDB Query LanguageSQL事务支持支持事务但不如关系数据库强4.x 版本及以上支持多文档事务完全支持事务ACID 5. 总结 MongoDB 是一个高性能、可扩展的 NoSQL 数据库非常适合处理大量的非结构化数据。与传统的关系数据库相比它的数据模型更加灵活可以更轻松地存储复杂的数据类型。通过 MongoDB开发者可以更快速地构建、扩展和维护他们的应用程序。 总结对比表 特性SQLiteMySQLPostgreSQLMongoDBRedisSQLAlchemy类型关系型数据库关系型数据库关系型数据库NoSQL文档数据库内存数据结构存储缓存数据库ORM框架关系型数据库数据模型表结构轻量级表结构表结构复杂类型支持文档JSON/BSON键值对支持多种数据结构ORM模型抽象数据库操作扩展性单文件不支持横向扩展支持垂直扩展分区支持支持横向扩展分区水平扩展分片内存存储支持水平扩展依赖数据库的扩展性并发支持低并发高并发高并发高并发高并发依赖底层数据库并发支持性能适合轻量级应用高性能适合Web应用高性能复杂查询优先高性能大数据量高吞吐量极高性能适合缓存和会话存储相对较低适用于开发阶段事务支持支持支持支持支持较弱支持可选支持事务管理适用场景嵌入式应用小型桌面应用Web应用企业级应用高并发、大数据场景地理信息动态数据日志数据实时数据高速缓存、实时数据分析Python开发中数据库操作封装 SQLite 适用于轻量级应用和单机存储适合移动端、嵌入式设备或简单应用。 MySQL 是一款功能强大、性能优异的关系型数据库适用于 Web 应用和传统的数据库应用。 PostgreSQL 适合复杂数据模型和高并发应用提供更多的功能和扩展性适用于大数据量和企业级应用。 MongoDB 适合需要灵活数据模型、大数据量和高扩展性的应用常用于实时数据分析和快速开发。 Redis 是一个高性能的内存数据库适合用作缓存、会话存储和实时数据分析。 SQLAlchemy 是一个 Python ORM 框架适合 Python 开发者进行关系型数据库操作的抽象封装。
http://www.zqtcl.cn/news/864121/

相关文章:

  • 河北省建设执业资格注册中心网站东莞微网站建设多少钱
  • 企业网站建设功能模块discover wordpress
  • 网站建设结课做诱导网站
  • 网站开发与设计难嘛青州网站建设推广
  • 网站开发程序员工资谷歌推广网站建设
  • 江门网页建站模板金富通青岛建设工程有限公司网站
  • 网站后台账户如何做会计分录做传奇开服一条龙网站哪个好
  • 天门市网站建设seo平台建设网站公司
  • php网站怎么做302织梦网站有会员系统怎么做
  • 清远建设局网站安阳吧百度贴吧
  • 做什么软件做网站效率最好网站公司建设都招聘那些职位
  • 缙云建设局网站深圳营销型网站设计
  • 企业网站制作价格成都高端网站建设公司哪家好
  • wordpress+做仿站网站建设费用属于业务宣传费吗
  • 昆明企业网站制作wordpress移动端插件menu
  • 长沙网站设计培训学校南宁建设网站哪里好
  • 提高基层治理效能全国seo搜索排名优化公司
  • 如何建设网站简介WordPress集成tipask
  • 青海网站开发公司建筑公司的愿景怎么写
  • 建设银行集团网站首页优化科技
  • dede 汽车网站网站上的彩票走势图是怎么做的
  • 网站内容营销呼市推广网站
  • 南宁网站建设价格医院有关页面设计模板
  • 城乡住房和城乡建设厅网站湖州公司网站建设
  • h5响应式的网站建站空间哪个好
  • 徐州网站建设与推广公众号开发技术风险
  • 男女做差差事的视频网站自己做一个小程序要多少钱
  • 临沂网站建设哪家好重庆建设招标造价信息网站
  • 筑巢网络官方网站深圳网站开发设计公司排名
  • 镇江市网站制作网页的代码实例