python连接数据库进行增删改查操作

简介

对数据库操作用到的主要模块是sqlalchemy模块。

SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM(对象关系映射)工具,使用MIT许可证发行。

SQLAlchemy最初在2006年2月发行,发行后便很快的成为Python社区中最广泛使用的ORM工具之一,丝毫不亚于Django自带的ORM框架。

SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。它的理念是,SQL数据库的量级和性能比对象集合重要,而对象集合的抽象又重要于表和行。

如果没有sqlalchemy模块,则需进行安装:

pip install sqlalchemy

pip install pymysql

检测是否安装成功的:

>>>import sqlalchemy

>>>sqlalchemy.__version__

'1.4.15'

对数据库操作一共分为三个步骤:连接数据库;建立数据库表;对数据库进行增删改查)

1.连接数据库

安装好模块以后,就要开始进行连库操作了。

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://root:123456@10.10.9.91:3306/test_wudi")

首先要把模块引用过来,sqlalchemy模块里有个create_engine函数,看名称create_engine翻译过来是创造引擎的意思,顾名思义就是连接数据库。create_engine参数("数据库+数据库驱动://用户:密码@ip地址:端口号/数据库名称")。

这样子数据库就算是连接了,但是也不算是真正的连接,因为还不能进行增删改查。

2.建立数据库表

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

declarative_base()是sqlalchemy内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将Python类和数据库表关联映射起来。简单的来说就是你python创建表,然后把表信息给declarative_base(),declarative_base()给你在数据库把表创建出来。

class Users(Base):

__tablename__ = "users" #数据库表模型类通过__tablename__和表关联起来。

id = Column(Integer, primary_key=True) #Column表示数据表的列。

name = Column(String(64), unique=True)

email = Column(String(64))

Base.metadata.create_all(engine) #生成数据库表

上述代码就是通过代码创建表的信息,有些代码已经解释出来了

__tablename__="数据库表名",通过这行代码定义你的数据库表叫什么名字

id = Column(Integer, primary_key=True)   #Column表示数据表的列,其中参数信息为:

'''

Column内参数信息:

数据类型:Integer 整型;String 字符串类型(CHAR,VARCHAR也可以);

是否为空:nullable=True,

是否为主键:primary_key=True,

是否自增:autoincrement=True,

索引:index=True

唯一索引:unique=True

'''

表创建完了,还有一个至关重要的一步:

Base.metadata.create_all(engine) #生成数据库表

把信息交给declarative_base()去数据库创建表

3.操作数据库

from sqlalchemy.orm import sessionmaker 

DbSession = sessionmaker(bind=engine) #大致意思就是绑定你所连接的数据库,bind绑定的意思

session = DbSession()    #创建会话

表创建完以后开始来操作的数据库,操作数据库之前需创建个会话,简单点来说,还是你python提交操作信息,session会话去完成。

(1)增加信息

def add():

add_user = Users('01',"test1", "test1@qq.com")

add_user1 = Users('02',"test2", "test2@qq.com")

add_user2 = Users('03',"test3", "test3@qq.com")

add_user3 = Users('04',"test4", "test4@qq.com")

for i in (add_user,add_user1,add_user2,add_user3):

        session.add(i) 

        session.commit() #这一行主要是将你所写的数据写进数据库,如果不加这一行,数据是提交不到数据库的。

上述代码就是增操作,Users就是创建表的那个类,里面的信息需要和你创建表时的信息一样,有几个字段就写几个参数。

session.commit() 这个至关重要,没有这个,你增加的信息是没法提交到数据库的。

(2)查询信息

def chaxun():

        user=session.query(Users.id).all()

        print('user:',user)

        for i in user:

                print(i)

查询操作很关键,涉及到你该怎么去删除和修改.

user=session.query(Users.id).all(),session是会话,query顾名思义就是查询,这段代码的意思就是查询users表(User类所创建的表是users,这里写类名称,不写表名称)中id字段的全部信息,如果是session.query(Users).first(),意思就是查询users表中全部字段的第一条信息。

上面那些是暴力查询,查询全部信息,那我该怎么通过条件筛选,去筛选我想要的信息呢?(这里仅仅介绍单表查询,暂不涉及连表查询)。

这里就要用到filter过滤器或者是filter_by过滤器

filterfilter_by
支持所有比较运算符,相等比较用:==只能使用"=","!="和"><"
过滤用类名.属性名过滤用属性名
不支持组合查询,只能连续调用filter变相实现参数是**kwargs,支持组合查询
支持and,or和in等

下面咱们通过更新和删除去简单看一下filter和filter_by用法

(3)更新数据,删除数据

def Update():

session.query(Users).filter_by(id=1).update({'name':'TEST'})

session.commit()

def Delete():

session.query(Users).filter(Users.id==1).delete()

session.commit()

相信经过查询的介绍,这个更新数据和删除数据大家应该都能看懂了,这里也不必过多解释了,剩下的就靠各位读者尝试和领悟了。

4.结尾

本篇文章就是简简单单说了一下python如何连接数据库,如何对数据库操作,可能有些地方有些模块的参数没介绍到,还请谅解,但是相对于初学python的学者来说还是有点帮助的。

以下是代码信息:

from sqlalchemy import create_engine,Column, String, Integer #create_engine 创建连接

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.sql.functions import user

engine = create_engine("mysql+mysqlconnector://root:123456@10.10.9.91:3306/test_wudi?charset=utf8") #连接数据库



Base = declarative_base() #declarative_base()是sqlalchemy内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将Python类和数据库表关联映射起来。



class Users(Base):

        __tablename__ = "users" #数据库表模型类通过__tablename__和表关联起来。



        '''

        Column内参数信息:

        数据类型:Integer 整型;String 字符串类型(CHAR,VARCHAR也可以);

        是否为空:nullable=True,

        是否为主键:primary_key=True,

        是否自增:autoincrement=True,

        索引:index=True

        唯一索引:unique=True

        '''

        id = Column(Integer, primary_key=True) #Column表示数据表的列。

        name = Column(String(64), unique=True)

        email = Column(String(64))



def __init__(self, id,name, email):

        self.id=id

        self.name = name

        self.email = email

        Base.metadata.create_all(engine) #生成数据库表



from sqlalchemy.orm import sessionmaker #创建会话



# 创建session

'''

session的常见操作方法包括:

flush:预提交,提交到数据库文件,还未写入数据库文件中

commit:提交了一个事务

rollback:回滚

close:关闭

'''

DbSession = sessionmaker(bind=engine) #类似于绑定你所连接的数据库 bind绑定的意思

session = DbSession()

#增加

def add():

        add_user = Users('01',"test1", "test1@qq.com")

        add_user1 = Users('02',"test2", "test2@qq.com")

        add_user2 = Users('03',"test3", "test3@qq.com")

        add_user3 = Users('04',"test4", "test4@qq.com")

        for i in (add_user,add_user1,add_user2,add_user3):

                session.add(i) #session.add()将会把Model加入当前session维护的持久空间(可以从session.dirty看到)中,直到commit时提交到数据库。

session.commit() #这一行主要是将你所写的数据写进数据库,如果不加这一行,数据是提交不到数据库的

#查询

def chaxun():

        user=session.query(Users.id).all()

        print('user:',user)

        for i in user:

        print(type(i))

        print(i)

#更新

def Update():

        session.query(Users).filter_by(id=1).update({'name':'TEST'})

        session.commit()

def Delete():

        session.query(Users).filter(Users.id==1).delete()

        session.commit()

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值