sqlalchemy core reflection反射学习笔记

本文介绍如何使用SQLAlchemy的反射功能来操作已存在的数据库表。包括创建元数据和引擎,使用不同方法反射表,以及如何利用反射后的表进行查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用SQLAlchemy 时,如果数据库中已有表,我们可以不需要创建新表,通过映射,使用已存在的表.

反射可以应用到表,视图,索引和外键上。

1:创建元数据和引擎,他们是反射一个表所需要的一切

"""
This module is to test sqlalchemy core reflect
"""
from sqlalchemy import MetaData, create_engine
from sqlalchemy import Table, select

# 创建一个引擎连接到 my database 'ANNEDBSE'
engine = create_engine('mysql+pymysql://userid:password@123.123.14.56:3306/ANNEDBSE?charset=utf8')
# 创建一个元数据对象来保存被反射的表模式信息
metadata = MetaData()

2:第一种方法反射表

# 方法一,使用autoload和autoload_with,把模式信息反射到metadata对象中,并在新变量
# my_cookies中保存对表的引用
my_cookies = Table('cookies', metadata, autoload=True, autoload_with=engine)

# 上面一行代码已经把现有表cookies里的信息反射到新表my_cookies,现在可以使用新表了
# 查看新表的各个column,并打印出来看看
k = my_cookies.columns.keys()
print(k)
# 选出新表前10行信息,并打印
s = select([my_cookies]).limit(10)
for result in engine.execute(s).fetchall():
    print(result)

3:第二种方法使用metadata对象的reflect方法,反射整个数据库。reflect会扫描引擎上的所有可用内容,并反射它所能反射的所有内容。

# 方法二,反射整个现有数据库
print('Next we will use metadata and engine to reflect the whole database')
metadata.reflect(bind=engine)
k = metadata.tables.keys()  # get the tables list
print(k)

4:第三种方法使用反射对象构建查询

print('Next we will use metadat.tables')
my_line_items = metadata.tables['line_items']
s = select([my_line_items])
results = engine.execute(s).fetchall()
for result in results:
    print(result)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值