sqlalchemy的基本使用(每一步骤的详细解析)

半个月前师兄给了份爬虫任务给我,让我用sqlalchemy来保存到mysql里面,由于只说了是orm框架,所以只能不断的百度了。

然而发现大部分有关sqlalchemy的说明都是直接放代码,然后什么也不说,看得人头大。

最后终于看到一篇知乎上有一篇关于sqlalchemy的教学,感觉非常受用,因此学习后记录于此。

那么在说之前,我们先了解一下什么事sqlalchemy

sqlalchemy是一种orm框架,全称是object relational mapper,是一种对象关系映射模型

简单点说就是

python中的类  == 数据库中的表

python中的类的属性 == 表中的字段

python中类的实例 == 表中的行

那么接下来讲一下如何来使用sqlalchemy,我们知道这个东西是要连接数据库才能发挥作用的,所以我们第一步当然是连接数据库。

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://user:password@hostname:port/dbname?charset=uft8",echo=True)

首先通过pip install sqlalchemy安装sqlalchemy库

create_engine()用来初始化数据库的链接

mysql是你的数据库

pymysql是你的数据库驱动的名称

user是账户名

password是密码

hostname是你要链接的数据库的IP地址

port是端口号,一般是3306

dbname就是你要链接的数据库的名字

charset是字符集

echo设置为True表示你每一次操作过后的状态变化都会被打印出来,设置为False的话就不会了。

那么通过create_engine()我们也只是初始化链接而已,我们上面说sqlalchemy是对象关系映射模型,那么怎么映射呢。

我们通过declarative_base()可以产生一个基类,并且这个基类和它的子类都可以通过接收到的数据映射成一张表。

所以,我们为了能够操纵表,就必须继承这个类。

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

通过这一句代码我们就成功创建了基类

class User(Base):
    __tablename__ = 'brief_introduction1'
    name = Column(VARCHAR(255),primary_key = True)
    brief = Column(Text(0))

User类继承了基类,因此我们在User类的对象一旦接收到数据,就可以映射成表

这里面必不可少的元素就是__tablename__,每一个类都一定要有这个东西,因为是表名。

那么怎么创建表呢,这里我们为了方便,直接在数据库上进行操作创建表,属性有name和brief

接下来就是插入数据

我们在create_engine的时候建立了与数据库的连接,但也仅仅是连接,我们还要通信来传输数据,那么怎么传输数据呢

这里我们用

DBSession = sessionmaker(bind = engine)

创建会话工厂,参数的意思是绑定我们之前连接的数据库。

当然了,到这一步为止,我们只是把修好路了,但是通信需要的工具我们还没拿到手,

因此我们通过

session = DBSession()

获得了通信工具,形象点就是车,现在路有了,车也有了,可以开始传数据了

 u = User()          #创建基类对象

  u.name = 'asd'   #给属性赋值

  u.brief = 'zxc'

 DBSession = sessionmaker(bind = engine) #修路

session = DBSession()    #造车

session.add(u)        #把数据放上车

session.commit()   #开车

session.close()   #熄火   


谢谢。



  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值