zoukankan      html  css  js  c++  java
  • 【python】SQLAlchemy

    来源:廖雪峰

    对比:【python】在python中调用mysql

    注意连接数据库方式和数据操作方式!

    今天发现了个处理数据库的好东西:SQLAlchemy

    一般python处理mysql之类的数据库时,都要connect, select, insert, commit等操作,到处都是,很不方便。SQLAlchemy可以解决这个问题。

    数据库表是一个二维表,包含多行多列。把一个表的内容用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的用法。

    例子代码:

    有一个mysql数据库TESTTABLE, 一个表test_distinct

    id是主键

    SQLAlchemy连接插入数据库的代码如下,注意,必须有主键,否则会出错!!

    #!/usr/bin/python
    #coding=utf-8
    
    from sqlalchemy import Column, String,Integer, create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    Base = declarative_base()
    
    class Test_Distinct(Base):
        __tablename__ = 'test_distinct'
        id = Column(Integer, primary_key=True)
        name = Column(String(255))
        type = Column(String(20))
    
    engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/TESTTABLE')
    DBSession = sessionmaker(bind=engine)
    
    session = DBSession()
    new_data = Test_Distinct(id=8, name='test',type='sqlalchemy')
    session.add(new_data)
    session.commit()
    session.close()

    插入后结果:

  • 相关阅读:
    Browsermob-Proxy 备忘
    Restic 备份工具
    GP刷新实体视图
    SDKMAN安装使用
    The requested module '/node_modules/.vite/vue.js?v=65afd58f' does not provide an export named 'default'
    Python——执行打包提示 ‘pyinstaller‘ 不是内部或外部命令,也不是可运行的程序
    python 打包exe 方法
    Python使用阿里云镜像
    使用Python项目生成所有依赖包的清单方式
    Git GuiUI的乱码问题如何解决
  • 原文地址:https://www.cnblogs.com/dplearning/p/6001830.html
Copyright © 2011-2022 走看看