您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python使用SQLAlchemy连接数据库CRUD

bubuko 2022/1/25 19:18:02 python 字数 2300 阅读 832 来源 http://www.bubuko.com/infolist-5-1.html

1.从源头上说起 数据库表是一个二维表,包含多行多列。 把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含id和name的user表: [ ('1', 'Michael'), ('2', 'Bob'), ('3' ...

1.从源头上说起

数据库表是一个二维表,包含多行多列。

把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含idnameuser表:

[
    (‘1‘, ‘Michael‘),
    (‘2‘, ‘Bob‘),
    (‘3‘, ‘Adam‘)
]

Python的DB-API返回的数据结构就是像上面这样表示的。

但是用tuple表示一行很难看出表的结构。

如果把一个tuple用class实例来表示,就可以更容易地看出表的结构来:

class User(object):
    def __init__(self, id, name):
        self.id = id
        self.name = name

[
    User(‘1‘, ‘Michael‘),
    User(‘2‘, ‘Bob‘),
    User(‘3‘, ‘Adam‘)
]

这就是传说中的ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上。

但是由谁来做这个转换呢?所以ORM框架应运而生。

在Python中,最有名的ORM框架是SQLAlchemy。

SQLAlchemy是Python用来操作数据库的一个库,该库提供了SQL工具包及对象关系映射(ORM)工具。

数据库的记录用Python的数据结构来表现,可以看做一个列表,每条记录是列表中的一个元组。

参考内容:https://www.liaoxuefeng.com/wiki/1016959663602400/1017803857459008、https://www.cnblogs.com/zhuozige/p/13131886.html

 

小结:把二维的数据库表用Python的数据结构表示出来是list套tuple,通过把关系数据库的表结构映射到对象上的ORM技术让表结构清晰表达,完成转换工作的就是ORM框架了。Python中最有名的ORM框架便是SQLAlchemy。

 

2.SQLAlchemy基本用法

对SQLAlchemy有了基本的认识,接下来就要对SQLAlchemy的用法进行学习。

1)导入SQLAlchemy,并初始化DBSession

from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建对象的基类
Base = declarative_base()
# 定义Product对象
class Product(Base):
    __tablename__ =‘Product‘
    ID = Column(String(20),primary_key=True)
    name = Column(String(20))
    class_name = Column(String(20))
        engine = create_engine(‘mysql+pymysql://root:password@localhost:3306/test‘)
        # 创建DBSession类型
        DBSession = sessionmaker(bind=engine)

 

Python使用SQLAlchemy连接数据库CRUD

原文:https://www.cnblogs.com/lncyc/p/14259165.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶