目录
专栏导读
🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
📕 此外还有python基础专栏:请点击——>Python基础学习专栏 求订阅
文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
❤️ 欢迎各位佬关注! ❤️
了解数据库架构
在开始使用Python连接数据库之前,了解数据库的基本架构是非常重要的。数据库是一个有组织的数据集合,通常以表格形式存储。每个表由行和列组成,其中行代表记录,列代表字段。
数据库管理系统(DBMS)是用于管理数据库的软件。常见的DBMS包括:
SQLite :轻量级的文件型数据库
MySQL :开源的关系型数据库
PostgreSQL :功能强大的开源对象关系型数据库
使用Python SQL库连接到数据库
Python提供了多种库来连接不同类型的数据库。以下是连接三种主要数据库的方法:
SQLite
SQLite是Python内置的数据库,无需安装额外的驱动程序。
import sqlite3
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 :
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 :
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都提供了简单易用的接口来进行数据库操作。
最佳实践
使用连接池 :对于生产环境,建议使用连接池来管理数据库连接
参数化查询 :始终使用参数化查询来防止SQL注入攻击
异常处理 :妥善处理数据库连接和操作中可能出现的异常
资源管理 :确保及时关闭数据库连接和游标
事务管理 :对于复杂操作,使用事务来保证数据一致性
通过掌握这些基本操作,你就可以在Python项目中有效地使用各种数据库了。
希望对初学者有帮助;致力于办公自动化的小小程序员一枚
希望能得到大家的【❤️一个免费关注❤️】感谢!
求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍