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

发布于:2025-06-30 ⋅ 阅读:(12) ⋅ 点赞:(0)

目录

专栏导读

  • 🌸 欢迎来到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 Error

try:
    # 连接到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 Error

try:
    # 连接到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 sqlite3

conn = 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.connector

connection = 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 psycopg2

connection = 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 sqlite3

conn = 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.connector

connection = 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 psycopg2

connection = 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 sqlite3

conn = 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.connector

connection = 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 psycopg2

connection = 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 sqlite3

conn = 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.connector

connection = 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 psycopg2

connection = 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 sqlite3

conn = 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.connector

connection = 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 psycopg2

connection = 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基础学习专栏