首页 > Python资料 博客日记
Python与SQL Server实战
2024-03-01 07:00:07Python资料围观163次
前言
讨论Python在数据处理和数据库管理中的重要性,以及SQL Server作为一个广泛使用的数据库系统的优势。介绍本书的目标读者是希望通过Python进行数据库操作的开发者、数据分析师和数据库管理员。
第一部分:基础概念
第1章:数据库基础
介绍关系数据库管理系统(RDBMS)的基本概念,如表、行、列和主键。解释SQL Server的特点和在行业中的应用场景。
关系数据库管理系统(RDBMS)的基本概念
关系数据库管理系统(RDBMS)是基于关系模型的数据库,它允许用户创建、更新、管理和查询基于表格的数据。在关系模型中,数据被组织成一个或多个表格(或“关系”),表由行和列组成。
表(Table):一个数据库中的表相当于一个存储数据的容器,它由行和列组成。每个表有一个唯一的名称,并存储相关数据。
行(Row):表中的每一行代表了一组相关的数据,即数据库中的一个记录。例如,在一个员工表中,每一行都会代表一个员工的信息。
列(Column):表中的每一列包含了某一特定类型的数据。例如,员工表的列可能包括员工ID、姓名、职位等。
主键(Primary Key):表中的一个或多个字段(列),这些字段的值可以唯一地标识表中的每一行。主键用于确保数据的唯一性,并作为表之间建立关系的基础。
SQL Server的特点
SQL Server是Microsoft开发的一种RDBMS,广泛应用于企业级数据库管理。它支持广泛的数据类型、复杂的查询、事务处理、数据分析及集成服务等特性。SQL Server的一些关键特点包括:
性能:SQL Server提供了高性能的数据存储和检索能力,支持大型数据库和复杂查询的优化。
可靠性和可用性:SQL Server提供了多种故障转移和灾难恢复选项,如日志传送、数据库镜像和群集,以确保数据的可靠性和持续可用性。
安全性:SQL Server提供了全面的安全特性,包括加密、访问控制和审核,以保护数据不被未授权访问。
可伸缩性:SQL Server能够处理从小型应用到大型企业级应用的不同数据需求,支持数据库的水平和垂直扩展。
SQL Server在行业中的应用场景
SQL Server被广泛应用于多个行业和领域,常见的应用场景包括:
企业信息系统:如财务管理、人力资源管理和供应链管理系统,这些系统需要高效、可靠的数据库来存储和处理大量数据。
电子商务平台:SQL Server可以管理电商平台的用户数据、商品信息、订单和交易记录等数据。
数据仓库和商业智能:SQL Server的数据仓库和商业智能服务支持企业收集、存储和分析来自各种来源的大数据,以支持决策制定。
云计算和移动应用:SQL Server与Microsoft Azure云服务紧密集成,为开发和部署云基础设施和移动应用提供了强大的后端支持。
总之,SQL Server作为一个功能丰富的RDBMS,不仅提供了强大的数据管理能力,还通过其安全性、可靠性和可伸缩性满足了各种行业和应用的需求。
第2章:Python编程基础
概述Python语言的基础,包括变量、控制流、函数和类的概念。介绍如何使用Python进行数据库操作的库,特别是SQLAlchemy和pymssql。
Python语言基础
Python是一种高级、解释型的编程语言,以其简洁明了的语法和强大的库支持而广受欢迎。Python的设计哲学强调代码的可读性和简洁性,使得它成为初学者和专业开发者都喜爱的语言。
变量
在Python中,变量无需声明即可直接使用,它们用于存储数据值。Python是动态类型的语言,这意味着您不需要显式声明变量的类型。类型会在赋值时自动确定:
number = 10 # 整数
text = "Hello, World!" # 字符串
控制流
控制流语句用于控制程序的执行顺序。Python使用缩进来组织代码块,这一点与其他使用大括号的语言不同。常见的控制流语句包括if、for和while:
if 语句
if number > 5:
print("Number is greater than 5")
for 循环
for i in range(5): # 从0到4
print(i)
while 循环
count = 0
while count < 5:
print(count)
count += 1
函数
函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码块。Python使用def关键字定义函数:
def greet(name):
return "Hello, " + name + "!"
print(greet("Alice"))
类
Python支持面向对象的编程范式。类(Class)是对象构造函数或“蓝图”的一种,用于创建对象。对象可以包含数据(称为属性)和代码(称为方法):
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print("My name is " + self.name + " and I am " + str(self.age) + " years old.")
person = Person("Bob", 30)
person.introduce()
Python进行数据库操作的库
SQLAlchemy
SQLAlchemy是Python中最流行的SQL工具之一,提供了全面的数据库操作功能,从简单的数据库连接到复杂的ORM(对象关系映射)。使用SQLAlchemy可以把数据库表映射为Python类,表的行作为对象实例,这样可以用Pythonic的方式进行数据库操作。
pymssql
pymssql是一个简单易用的库,提供了对Microsoft SQL Server的访问。它允许直接使用Transact-SQL语句进行数据库操作,适合需要执行特定SQL命令的场景。
使用pymssql连接到SQL Server:
import pymssql
conn = pymssql.connect(server='hostname', user='username', password='password', database='dbname')
cursor = conn.cursor()
cursor.execute('SELECT * FROM mytable')
for row in cursor:
print('row = %r' % (row,))
conn.close()
尽管pymssql直接操作数据库,但SQLAlchemy提供了更高级别的抽象,使得数据库操作更加灵活和强大。选择哪个库取决于具体需求和个人偏好。
第二部分:实践应用
第3章:环境搭建与配置
详细说明如何在不同操作系统上安装SQL Server和Python。介绍如何安装SQLAlchemy和pymssql库,并配置Python与SQL Server的连接。
安装SQL Server
Windows
访问SQL Server下载页面。
选择适合你需求的版本,例如SQL Server 2019 Express版(免费)。
下载并运行安装程序。
在安装向导中,选择“基本”安装类型将引导你完成安装过程。
完成安装后,可能需要重启计算机。
Linux(以Ubuntu为例)
打开终端。
导入公钥:bashCopy code
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
添加SQL Server产品库:bashCopy code
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/mssql-server-2019.list)"
更新源并安装SQL Server:
sudo apt-get update sudo apt-get install -y mssql-server
完成安装后,运行配置脚本来设置SA用户密码等:
sudo /opt/mssql/bin/mssql-conf setup
安装Python
访问Python官网下载页面,选择适合你操作系统的Python版本进行安装。Windows安装器包括一个图形界面,Linux和macOS可能需要通过命令行进行安装。
安装SQLAlchemy和pymssql库
在安装了Python后,你可以使用pip命令来安装SQLAlchemy和pymssql库。
pip install SQLAlchemy pymssql
配置Python与SQL Server的连接
使用SQLAlchemy
确保你已经安装了SQLAlchemy和pymssql。
在Python脚本中,使用以下代码段来创建一个引擎并连接到SQL Server:
from sqlalchemy import create_engine
# 替换下面的用户名、密码、服务器和数据库名称
DATABASE_URL = "mssql+pymssql://username:password@hostname/database_name"
engine = create_engine(DATABASE_URL)
# 测试连接
with engine.connect() as connection:
result = connection.execute("SELECT 1") print(result.fetchone())
使用pymssql直接连接
如果你只是想使用pymssql进行连接,不通过SQLAlchemy,可以按照以下方式:
import pymssql
# 替换下面的用户名、密码、服务器和数据库名称
conn = pymssql.connect(server='hostname', user='username', password='password', database='dbname')
cursor = conn.cursor()
cursor.execute('SELECT * FROM myTable')
for row in cursor:
print(row)
conn.close()
安装和配置可能会根据具体的系统环境和SQL Server的版本有所不同。建议参考官方文档和社区论坛来解决安装过程中遇到的具体问题。
第4章:SQLAlchemy基础
从定义数据模型开始,展示如何使用SQLAlchemy的ORM功能来映射Python类到数据库表。讨论declarative_base的使用,以及如何定义表的列和主键。
SQLAlchemy的ORM(对象关系映射)功能允许开发者以Pythonic的方式操作数据库。这意味着你可以用Python类来定义数据库表的结构,然后SQLAlchemy会负责将这些类映射到数据库表中。这个过程大大简化了数据库操作,并且使得代码更加直观和易于维护。
使用declarative_base()创建基类
一切从declarative_base()开始,它是SQLAlchemy用于声明ORM模型的函数。这个函数会返回一个基类,你的模型类(即Python类)将继承这个基类:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
定义数据模型
定义数据模型意味着定义一个Python类,通过继承Base类,将这个Python类映射到数据库表。在类定义中,你可以使用Column类来定义表的列,使用Integer、String等来指定列的类型,用primary_key=True来指定主键:
pythonCopy code
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'users' # 指定表名
id = Column(Integer, primary_key=True) # 定义主键
name = Column(String) # 定义字符串列
age = Column(Integer) # 定义整数列
在这个例子中,我们定义了一个名为User的模型,它将映射到数据库中的users表。这个表有三个字段:id、name和age。id字段被指定为主键,这意味着它的值在表中必须唯一。
创建数据库表
定义好数据模型后,你可以使用create_all()方法来根据模型创建数据库表:
pythonCopy code
from sqlalchemy import create_engine
# 创建数据库连接引擎
engine = create_engine('sqlite:///example.db') # 这里使用SQLite作为示例,实际应用中请根据需要更换连接字符串
# 创建表(如果表已存在,则忽略)
Base.metadata.create_all(engine)
这段代码首先创建了一个指向example.db文件的SQLite数据库的连接引擎。然后,通过调用Base.metadata.create_all(engine),根据之前定义的User模型在数据库中创建users表。
总结
使用SQLAlchemy的ORM功能可以让你以声明式的方式定义数据模型,这种方式让数据库操作更加直观,更接近Python的风格。通过继承declarative_base()返回的基类,并在类中定义表的结构,你可以轻松地将Python类映射到数据库表。然后,使用create_all()方法可以根据模型在数据库中创建表,这使得数据库的创建和维护变得更加容易和灵活
第5章:数据操作
以实际代码为例,介绍如何使用SQLAlchemy进行数据的CRUD操作(创建、读取、更新、删除)。包括如何插入新记录、查询数据、更新记录和删除记录。
使用SQLAlchemy进行CRUD(创建、读取、更新、删除)操作是一个直观而强大的过程。以下示例将指导你如何执行这些操作。假设我们使用之前定义的User模型作为例子:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# 创建数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)
Base.metadata.create_all(engine)
# 创建Session类
Session = sessionmaker(bind=engine)
创建(Insert)
向数据库插入新记录:
pythonCopy code
# 创建Session实例
session = Session()
# 创建新User对象
new_user = User(name='John Doe', age=28)
# 添加到会话
session.add(new_user)
# 提交会话到数据库
session.commit()
# 关闭会话
session.close()
读取(Query)
查询数据库中的记录:
pythonCopy code
session = Session()
# 查询单个用户
user = session.query(User).filter_by(name='John Doe').first()
print(user.name, user.age)
# 查询所有用户
users = session.query(User).all()
for user in users:
print(user.name, user.age)
session.close()
更新(Update)
更新数据库中的记录:
pythonCopy code
session = Session()
# 找到用户
user = session.query(User).filter_by(name='John Doe').first()
if user:
# 更新年龄
user.age = 30
# 提交会话到数据库
session.commit()
session.close()
删除(Delete)
从数据库中删除记录:
pythonCopy code
session = Session()
# 找到用户
user = session.query(User).filter_by(name='John Doe').first()
if user:
# 从会话中删除用户
session.delete(user)
# 提交会话到数据库
session.commit()
session.close()
在这些示例中,session对象扮演着非常重要的角色,它不仅管理着数据库连接和事务,而且还负责执行操作并维护对象的状态。通过使用Session,SQLAlchemy提供了一种非常自然和直观的方式来与数据库进行交互,使得执行CRUD操作变得简单易行。
请注意,示例中使用的数据库是SQLite,并且数据库文件名为example.db。在实际应用中,你可能需要根据自己的需求更换为其他数据库和连接字符串。此外,echo=True参数在创建引擎时被用于打印所有生成的SQL语句,这对于调试非常有用,但在生产环境中可能需要关闭。
标签:
相关文章
最新发布
- 华为OD机试E卷 --空栈压数 --24年OD统一考试(Java & JS & Python & C & C++)
- 计算机毕业设计 基于Python的热门微博数据可视化分析系统的设计与实现 Python毕业设计 Python毕业设计选题 Spark 大数据【附源码+安装调试】
- Python写UI自动化--playwright(点击操作)
- 立创实战派ESP32-S3环境搭建错误经验分享,卡python,ESP-IDF(部分官方例程无法烧录)
- 华为OD机试E卷 --通过软盘拷贝文件--24年OD统一考试(Java & JS & Python & C & C++)
- 宝塔部署-python项目
- Python—selenium —xpath定位方法详解
- 【Python】Python零基础100题测试(附答案)
- Python 程序打包成 EXE 文件及相关操作详解
- 华为OD机试E卷 --最多获得的短信条数--24年OD统一考试(Java & JS & Python & C & C++)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程