我是靠谱客的博主 开放菠萝,最近开发中收集的这篇文章主要介绍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()   #熄火   


谢谢。



最后

以上就是开放菠萝为你收集整理的sqlalchemy的基本使用(每一步骤的详细解析)的全部内容,希望文章能够帮你解决sqlalchemy的基本使用(每一步骤的详细解析)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部