首页 > 数据库 >Python:SQLAlchemy 2.0 库使用教程

Python:SQLAlchemy 2.0 库使用教程

时间:2024-07-19 14:54:55浏览次数:14  
标签:engine SQLAlchemy Python create tiger scott 2.0 数据库 localhost

SQLAlchemy 2.0

版本检查

import sqlalchemy
sqlalchemy.__version__  

建立连接-engine

任何 SQLAlchemy 应用程序的开始都是一个称为Engine的对象。此对象充当连接到特定数据库的中心源,既提供一个工厂,又提供一个称为 连接池 的存储空间,用于这些数据库连接。

用法:

engine = create_engine('dialect+driver://username:password@host:port/database')
  • dialect:数据库类型
  • driver:数据库驱动选择
  • username:数据库用户名
  • password: 用户密码
  • host:服务器地址
  • port:端口
  • database:数据库

SQLAlchemy 通过 Engine 管理与数据库的连接信息。

from sqlalchemy import create_engine,text,Table,MetaData

# 1. 创建引擎(mysql数据库引擎)
engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/my_db', echo=True)

# 2. 连接数据库
with engine.connect() as conn:
    result = conn.execute(text('select * from student'))
    print(result.fetchall())
    conn.execute(text('insert into student (uid, name, age) values (:uid,:name,:age)'),{'uid':106,'name':'xiaoba','age':22})
    conn.commit()
    result2 = conn.execute(text('select * from student'))
    print(result2.fetchall())
    
    # 传入多个参数,一次性插入多行数据
    conn.execute(text('insert into student (uid, name, age) values (:uid,:name,:age)'),[{'uid':106,'name':'xiaoba','age':22},{'uid':107,'name':'laojiu','age':25},{'uid':108,'name':'chengshi'}])
    conn.close()

创建引擎的 echo=True 参数代表在控制台上打印运行SQL日志;在这个例子中,我们使用 text() 函数构造了一个安全的 SQL 语句,并通过字典传递了参数;通过 fetchall() 获取执行SQL返回的结果集,值得注意的是,再调用该方法后,会关闭结果集,再次调用只会返回空列表(源码中有讲解);整个execute执行语句是隐式包含事务的,如果不通过 commit() 进行提交,默认会 ROLLBACK 回滚。

下面展示下连接不同数据库驱动的选择:

PostgreSQL

engine = create_engine('postgresql://scott:tiger@localhost/mydatabase')
psycopg2
engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
pg8000
engine = create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')

MySQL

default
engine = create_engine('mysql://scott:tiger@localhost/foo')
mysql-python
engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')
MySQL-connector-python
engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
OurSQL
engine = create_engine('mysql+oursql://scott:tiger@localhost/foo')

More notes on connecting to MySQL at MySQL.

Oracle

engine = create_engine('oracle://scott:[email protected]:1521/sidname')
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')

More notes on connecting to Oracle at Oracle.

Microsoft SQL Server

engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')

pymssql

engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
SQLite
engine = create_engine('sqlite:///foo.db')
engine = create_engine('sqlite:absolute/path/to/foo.db')

使用

engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/my_db', echo=True)
  • echo=True代表在控制台打印SQL执行过程

注意:这里的创建引擎并不代表创建了数据库的连接器。

Pandas处理的数据写入数据库

from sqlalchemy import create_engine,text,Table,MetaData
import pandas pd

# pandas 加载处理数据
...

# 可选:检查DataFrame列是否与数据库表列匹配
metadata = MetaData()
table = Table(DB_TABLE, metadata, autoload_with=engine)
df_cols = set(df.columns)
table_cols = set(table.columns.keys())

if df_cols != table_cols:
    print("DataFrame columns and database table columns do not match:")
    print(f"DataFrame columns: {df_cols}")
    print(f"Table columns: {table_cols}")
    # 在这里,您可以选择添加或删除列,以使它们匹配
    # 或者,您可以修改数据库表结构以匹配DataFrame
else:
    print("DataFrame columns match database table columns.")

# 将DataFrame插入到MySQL表中
df.to_sql(DB_TABLE, con=engine, if_exists='append', index=False)

标签:engine,SQLAlchemy,Python,create,tiger,scott,2.0,数据库,localhost
From: https://www.cnblogs.com/Mr-Sponge/p/18311439

相关文章

  • python 数据类型
    python的常见基本数据类型Number(数字)String(字符串)bool(布尔类型)List(列表)Tuple(元组)Set(集合)Dictionary(字典不可变数据类型(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据类型(3个):List(列表)、Dictionary(字典)、Set(集合)。python一切皆是对象类型指的也是对象的类型不......
  • python 爬虫技术 第02节 基础复习
    Python基础复习Python是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些Python基础概念的复习:1.数据类型Python支持多种内置数据类型,包括:数字(int,float,complex)字符串......
  • python-加密的病历单(赛氪OJ)
    [题目描述]小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。经过研究,小英发现了如下加密规律(括号中......
  • python之初识函数(函数的使用、可变长度参数*args和**kwargs、return的作用),了解函数的
    文章目录前言1、函数1.1函数的本质1.2定义函数1.3调用函数1.4深入解析函数1.5定义函数的完整语法1.5.1参数1.5.1.1参数的分类(位置、默认、关键字、可变长度)1.5.1.2参数的书写顺序1.5.2关键字:return前言本篇文章的目的是带领大家从零开始认识函数,作为函数......
  • ubuntu16.04安装python3.7
    二.安装python3.7本次python3.7使用源码安装安装环境sudoapt-getinstallzlib1g-devlibbz2-devlibssl-devlibncurses5-devlibsqlite3-dev libreadline-devtk-devlibgdbm-devlibdb-devlibpcap-devxz-utilslibexpat1-dev liblzma-devlibffi-devlibc6-dev源......
  • Python小白菜鸟从入门到精通
    前言Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版......
  • CentOS6.5yum安装Python3⛱️
    CentOS6.5yum安装Python3⛱️ 1.在CentOS6.5上通过Webtatic仓库安装Python3[root@localhost~]#rpm-Uvhhttps://mirror.webtatic.com/yum/el6/latest.rpm[root@localhost~]#yum-yinstallpython34upython34u-devel2.安装pip[root@localhost~]#yum-yi......
  • 使用Python爬虫下载视频源码
    一、引言(●ˇ∀ˇ●)在当今互联网时代,视频内容已成为人们获取信息和娱乐的重要方式。有时,我们可能希望将这些视频下载到本地,以便在没有网络的情况下观看。本文将介绍如何使用Python编写一个简单的爬虫。二、环境准备......
  • Python - Conda - 对比 conda 和 pip
    之前已经写过一篇和工具相关的文章:《工具篇:makeasparrowcmakebuildsystem》,本文继续这个话题,大家可能都用过conda和pip,但是对于他们的区别和关系,可能大家不一定很清楚,本文来尝试做一些总结。一、conda1.1简介conda是一个通用的包管理器,意思是什么语言的包都可以用它进行管......
  • 计算机毕业设计Python+Tensorflow小说推荐系统 K-means聚类推荐算法 深度学习 Kears
    2、基于物品协同过滤推荐算法2.1、基于⽤户的协同过滤算法(UserCF)该算法利⽤⽤户之间的相似性来推荐⽤户感兴趣的信息,个⼈通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的⽬的进⽽帮助别⼈筛选信息,回应不⼀定局限于特别感兴趣的,特别不感兴趣信息的纪录也相......