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

【Python数据库】Python连接3种数据库方法(SQLite\MySQL\PostgreSQL)

目录

  • 了解数据库架构
  • 使用Python SQL库连接到数据库
    • SQLite
    • MySQL(MySQL的)
    • PostgreSQL数据库
  • 创建表
    • SQLite
    • MySQL(MySQL的)
    • PostgreSQL数据库
  • 插入记录
    • SQLite
    • MySQL(MySQL的)
    • PostgreSQL数据库
  • 选择记录
    • SQLite
    • MySQL(MySQL的)
    • PostgreSQL数据库
  • 更新表记录
    • SQLite
    • MySQL(MySQL的)
    • PostgreSQL数据库
  • 删除表记录
    • SQLite
    • MySQL(MySQL的)
    • PostgreSQL数据库
  • 结论

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

了解数据库架构

在开始使用Python连接数据库之前,了解数据库的基本架构是非常重要的。数据库是一个有组织的数据集合,通常以表格形式存储。每个表由行和列组成,其中行代表记录,列代表字段。
数据库管理系统(DBMS)是用于管理数据库的软件。常见的DBMS包括:
  • SQLite:轻量级的文件型数据库
  • MySQL:开源的关系型数据库
  • PostgreSQL:功能强大的开源对象关系型数据库

使用Python SQL库连接到数据库

Python提供了多种库来连接不同类型的数据库。以下是连接三种主要数据库的方法:

SQLite

SQLite是Python内置的数据库,无需安装额外的驱动程序。
import sqlite3# 连接到SQLite数据库
# 如果文件不存在,会自动创建
conn = sqlite3.connect('example.db')
cursor = conn.cursor()print("成功连接到SQLite数据库")# 关闭连接
conn.close()

MySQL(MySQL的)

连接MySQL需要安装`mysql-connector-python`或`PyMySQL`库。
import mysql.connector
from mysql.connector import Errortry:# 连接到MySQL数据库connection = mysql.connector.connect(host='localhost',database='your_database',user='your_username',password='your_password')if connection.is_connected():db_info = connection.get_server_info()print(f"成功连接到MySQL服务器,版本:{db_info}")except Error as e:print(f"连接MySQL时发生错误:{e}")finally:if connection.is_connected():connection.close()print("MySQL连接已关闭")

PostgreSQL数据库

连接PostgreSQL需要安装`psycopg2`库。
import psycopg2
from psycopg2 import Errortry:# 连接到PostgreSQL数据库connection = psycopg2.connect(host='localhost',database='your_database',user='your_username',password='your_password',port='5432')cursor = connection.cursor()cursor.execute("SELECT version();")record = cursor.fetchone()print(f"成功连接到PostgreSQL:{record}")except Error as e:print(f"连接PostgreSQL时发生错误:{e}")finally:if connection:cursor.close()connection.close()print("PostgreSQL连接已关闭")

创建表

SQLite

import sqlite3conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT UNIQUE NOT NULL,age INTEGER)
''')conn.commit()
print("SQLite表创建成功")
conn.close()

MySQL(MySQL的)

import mysql.connectorconnection = mysql.connector.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 创建表
create_table_query = '''CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,email VARCHAR(100) UNIQUE NOT NULL,age INT)
'''cursor.execute(create_table_query)
connection.commit()
print("MySQL表创建成功")cursor.close()
connection.close()

PostgreSQL数据库

import psycopg2connection = psycopg2.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 创建表
create_table_query = '''CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY,name VARCHAR(100) NOT NULL,email VARCHAR(100) UNIQUE NOT NULL,age INTEGER)
'''cursor.execute(create_table_query)
connection.commit()
print("PostgreSQL表创建成功")cursor.close()
connection.close()

插入记录

SQLite

import sqlite3conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 插入单条记录
cursor.execute("INSERT INTO users (name, email, age) VALUES (?, ?, ?)", ("张三", "zhangsan@example.com", 25))# 插入多条记录
users_data = [("李四", "lisi@example.com", 30),("王五", "wangwu@example.com", 28)
]
cursor.executemany("INSERT INTO users (name, email, age) VALUES (?, ?, ?)", users_data)conn.commit()
print(f"成功插入{cursor.rowcount}条记录")
conn.close()

MySQL(MySQL的)

import mysql.connectorconnection = mysql.connector.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 插入记录
insert_query = "INSERT INTO users (name, email, age) VALUES (%s, %s, %s)"
user_data = ("张三", "zhangsan@example.com", 25)cursor.execute(insert_query, user_data)
connection.commit()
print(f"成功插入{cursor.rowcount}条记录")cursor.close()
connection.close()

PostgreSQL数据库

import psycopg2connection = psycopg2.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 插入记录
insert_query = "INSERT INTO users (name, email, age) VALUES (%s, %s, %s)"
user_data = ("张三", "zhangsan@example.com", 25)cursor.execute(insert_query, user_data)
connection.commit()
print(f"成功插入{cursor.rowcount}条记录")cursor.close()
connection.close()

选择记录

SQLite

import sqlite3conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 查询所有记录
cursor.execute("SELECT * FROM users")
records = cursor.fetchall()print("所有用户记录:")
for row in records:print(f"ID: {row[0]}, 姓名: {row[1]}, 邮箱: {row[2]}, 年龄: {row[3]}")# 条件查询
cursor.execute("SELECT * FROM users WHERE age > ?", (25,))
young_users = cursor.fetchall()print("\n年龄大于25的用户:")
for user in young_users:print(f"姓名: {user[1]}, 年龄: {user[3]}")conn.close()

MySQL(MySQL的)

import mysql.connectorconnection = mysql.connector.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 查询记录
select_query = "SELECT * FROM users WHERE age > %s"
cursor.execute(select_query, (25,))
records = cursor.fetchall()print("查询结果:")
for row in records:print(f"ID: {row[0]}, 姓名: {row[1]}, 邮箱: {row[2]}, 年龄: {row[3]}")cursor.close()
connection.close()

PostgreSQL数据库

import psycopg2connection = psycopg2.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 查询记录
select_query = "SELECT * FROM users WHERE age > %s"
cursor.execute(select_query, (25,))
records = cursor.fetchall()print("查询结果:")
for row in records:print(f"ID: {row[0]}, 姓名: {row[1]}, 邮箱: {row[2]}, 年龄: {row[3]}")cursor.close()
connection.close()

更新表记录

SQLite

import sqlite3conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 更新记录
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "张三"))
conn.commit()print(f"成功更新{cursor.rowcount}条记录")
conn.close()

MySQL(MySQL的)

import mysql.connectorconnection = mysql.connector.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 更新记录
update_query = "UPDATE users SET age = %s WHERE name = %s"
cursor.execute(update_query, (26, "张三"))
connection.commit()print(f"成功更新{cursor.rowcount}条记录")cursor.close()
connection.close()

PostgreSQL数据库

import psycopg2connection = psycopg2.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 更新记录
update_query = "UPDATE users SET age = %s WHERE name = %s"
cursor.execute(update_query, (26, "张三"))
connection.commit()print(f"成功更新{cursor.rowcount}条记录")cursor.close()
connection.close()

删除表记录

SQLite

import sqlite3conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 删除记录
cursor.execute("DELETE FROM users WHERE age < ?", (25,))
conn.commit()print(f"成功删除{cursor.rowcount}条记录")
conn.close()

MySQL(MySQL的)

import mysql.connectorconnection = mysql.connector.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 删除记录
delete_query = "DELETE FROM users WHERE age < %s"
cursor.execute(delete_query, (25,))
connection.commit()print(f"成功删除{cursor.rowcount}条记录")cursor.close()
connection.close()

PostgreSQL数据库

import psycopg2connection = psycopg2.connect(host='localhost',database='your_database',user='your_username',password='your_password'
)cursor = connection.cursor()# 删除记录
delete_query = "DELETE FROM users WHERE age < %s"
cursor.execute(delete_query, (25,))
connection.commit()print(f"成功删除{cursor.rowcount}条记录")cursor.close()
connection.close()

结论

本文介绍了使用Python连接和操作三种主要数据库(SQLite、MySQL、PostgreSQL)的方法。每种数据库都有其特点和适用场景:
  • SQLite:适合小型应用和原型开发,无需安装服务器
  • MySQL:适合Web应用和中小型项目,性能良好
  • PostgreSQL:适合大型应用和复杂查询,功能强大
在实际开发中,选择合适的数据库取决于项目需求、数据量、并发要求等因素。无论选择哪种数据库,Python都提供了简单易用的接口来进行数据库操作。

最佳实践

  1. 使用连接池:对于生产环境,建议使用连接池来管理数据库连接
  2. 参数化查询:始终使用参数化查询来防止SQL注入攻击
  3. 异常处理:妥善处理数据库连接和操作中可能出现的异常
  4. 资源管理:确保及时关闭数据库连接和游标
  5. 事务管理:对于复杂操作,使用事务来保证数据一致性
通过掌握这些基本操作,你就可以在Python项目中有效地使用各种数据库了。
  • 希望对初学者有帮助;致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【❤️一个免费关注❤️】感谢!

  • 求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

http://www.lqws.cn/news/544015.html

相关文章:

  • 人工智能-基础篇-4-人工智能AI、机器学习ML和深度学习DL之间的关系
  • 人工智能-基础篇-3-什么是深度学习?(DL,卷积神经网络CNN,循环神经网络RNN,Transformer等)
  • fish安装node.js环境
  • 【CMake基础入门教程】第八课:构建并导出可复用的 CMake 库(支持 find_package() 查找)
  • 视觉疲劳检测如何优化智能驾驶的险情管理
  • Java练习题精选16-20
  • C++01背包问题
  • 汇总表支持表头分组,查询组件查询框可以调整高度,DataEase开源BI工具v2.10.11 LTS版本发布
  • ESP32 008 MicroPython Web框架库 Microdot 实现的网络文件服务器
  • A Machine Learning Approach for Non-blind Image Deconvolution论文阅读
  • 金蝶云星空客户端自定义控件插件-WPF实现自定义控件
  • 电磁波是如何传递信息的?
  • 鸿蒙 List 组件解析:从基础列表到高性能界面开发指南
  • 前端 E2E 测试实践:打造稳定 Web 应用的利器!
  • 海外 AI 部署:中国出海企业如何选择稳定、安全的云 GPU 基础设施?
  • 扬州搓澡非遗解码:三把刀文化的“水包皮“
  • 010 【入门】链表入门题目-合并两个有序链表
  • Linux驱动学习day9(异常与中断处理)
  • 华为云Flexus+DeepSeek征文|基于Dify构建故事绘本制作工作流
  • Spark 写入hive表解析
  • Spring Boot项目开发实战销售管理系统——系统设计!
  • 知名流体控制解决方案供应商“永盛科技”与商派ShopeX达成B2B商城项目合作
  • iOS 远程调试与离线排查实战:构建非现场问题复现机制
  • 报道称CoreWeave洽谈收购Core Scientific,后者涨超30%
  • NV025NV033美光固态闪存NV038NV040
  • 《二分枚举答案(配合数据结构)》题集
  • Python Selenium 滚动到特定元素
  • Selenium基本用法
  • Spring Boot 性能优化与最佳实践
  • 6.27_JAVA_面试(被抽到了)