最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python連接數(shù)據(jù)庫的3種方法對比(SQLite\MySQL\PostgreSQL)

 更新時間:2025年08月26日 10:24:07   作者:小莊-Python辦公  
數(shù)據(jù)庫是一個有組織的數(shù)據(jù)集合,通常以表格形式存儲,這篇文章主要為大家詳細介紹了Python連接數(shù)據(jù)庫的3種方法,即SQLite,MySQL和PostgreSQL,希望對大家有所幫助

了解數(shù)據(jù)庫架構(gòu)

在開始使用Python連接數(shù)據(jù)庫之前,了解數(shù)據(jù)庫的基本架構(gòu)是非常重要的。數(shù)據(jù)庫是一個有組織的數(shù)據(jù)集合,通常以表格形式存儲。每個表由行和列組成,其中行代表記錄,列代表字段。

數(shù)據(jù)庫管理系統(tǒng)(DBMS)是用于管理數(shù)據(jù)庫的軟件。常見的DBMS包括:

  • SQLite:輕量級的文件型數(shù)據(jù)庫
  • MySQL:開源的關(guān)系型數(shù)據(jù)庫
  • PostgreSQL:功能強大的開源對象關(guān)系型數(shù)據(jù)庫

使用Python SQL庫連接到數(shù)據(jù)庫

Python提供了多種庫來連接不同類型的數(shù)據(jù)庫。以下是連接三種主要數(shù)據(jù)庫的方法:

SQLite

SQLite是Python內(nèi)置的數(shù)據(jù)庫,無需安裝額外的驅(qū)動程序。

import sqlite3

# 連接到SQLite數(shù)據(jù)庫
# 如果文件不存在,會自動創(chuàng)建
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

print("成功連接到SQLite數(shù)據(jù)庫")

# 關(guān)閉連接
conn.close()

MySQL

連接MySQL需要安裝`mysql-connector-python`或`PyMySQL`庫。

import mysql.connector
from mysql.connector import Error

try:
    # 連接到MySQL數(shù)據(jù)庫
    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時發(fā)生錯誤:{e}")
    
finally:
    if connection.is_connected():
        connection.close()
        print("MySQL連接已關(guān)閉")

PostgreSQL數(shù)據(jù)庫

連接PostgreSQL需要安裝`psycopg2`庫。

import psycopg2
from psycopg2 import Error

try:
    # 連接到PostgreSQL數(shù)據(jù)庫
    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時發(fā)生錯誤:{e}")
    
finally:
    if connection:
        cursor.close()
        connection.close()
        print("PostgreSQL連接已關(guān)閉")

創(chuàng)建表

SQLite

import sqlite3

conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# 創(chuàng)建表
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表創(chuàng)建成功")
conn.close()

MySQL

import mysql.connector

connection = mysql.connector.connect(
    host='localhost',
    database='your_database',
    user='your_username',
    password='your_password'
)

cursor = connection.cursor()

# 創(chuàng)建表
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表創(chuàng)建成功")

cursor.close()
connection.close()

PostgreSQL數(shù)據(jù)庫

import psycopg2

connection = psycopg2.connect(
    host='localhost',
    database='your_database',
    user='your_username',
    password='your_password'
)

cursor = connection.cursor()

# 創(chuàng)建表
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表創(chuàng)建成功")

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

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數(shù)據(jù)庫

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

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("查詢結(jié)果:")
for row in records:
    print(f"ID: {row[0]}, 姓名: {row[1]}, 郵箱: {row[2]}, 年齡: {row[3]}")

cursor.close()
connection.close()

PostgreSQL數(shù)據(jù)庫

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("查詢結(jié)果:")
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

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數(shù)據(jù)庫

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

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數(shù)據(jù)庫

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()

結(jié)論

本文介紹了使用Python連接和操作三種主要數(shù)據(jù)庫(SQLite、MySQL、PostgreSQL)的方法。每種數(shù)據(jù)庫都有其特點和適用場景:

  • SQLite:適合小型應用和原型開發(fā),無需安裝服務器
  • MySQL:適合Web應用和中小型項目,性能良好
  • PostgreSQL:適合大型應用和復雜查詢,功能強大

在實際開發(fā)中,選擇合適的數(shù)據(jù)庫取決于項目需求、數(shù)據(jù)量、并發(fā)要求等因素。無論選擇哪種數(shù)據(jù)庫,Python都提供了簡單易用的接口來進行數(shù)據(jù)庫操作。

最佳實踐

  • 使用連接池:對于生產(chǎn)環(huán)境,建議使用連接池來管理數(shù)據(jù)庫連接
  • 參數(shù)化查詢:始終使用參數(shù)化查詢來防止SQL注入攻擊
  • 異常處理:妥善處理數(shù)據(jù)庫連接和操作中可能出現(xiàn)的異常
  • 資源管理:確保及時關(guān)閉數(shù)據(jù)庫連接和游標
  • 事務管理:對于復雜操作,使用事務來保證數(shù)據(jù)一致性

通過掌握這些基本操作,你就可以在Python項目中有效地使用各種數(shù)據(jù)庫了。

以上就是Python連接數(shù)據(jù)庫的3種方法對比(SQLite\MySQL\PostgreSQL)的詳細內(nèi)容,更多關(guān)于Python連接數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

延庆县| 绥江县| 磐安县| 秦安县| 五大连池市| 望都县| 陵川县| 方山县| 深泽县| 阿鲁科尔沁旗| 南阳市| 赣州市| 抚顺市| 乌鲁木齐市| 乌海市| 马龙县| 高淳县| 潼南县| 闸北区| 晴隆县| 郧西县| 江川县| 方山县| 芦溪县| 浦北县| 澎湖县| 曲阜市| 延安市| 涞水县| 明水县| 淮南市| 县级市| 方山县| 成安县| 遵化市| 定兴县| 互助| 平乡县| 土默特右旗| 鱼台县| 安远县|