基于Python的SQLAlchemy的操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Python的SQLAlchemy的操作相关的知识,希望对你有一定的参考价值。

安装

在Python使用SQLAlchemy的首要前提是安装相应的模块,当然作为python的优势,可以到python安装目录下的scripts下,同时按住shift+加上鼠标左键,从而在菜单中打开命令行

使用:1.pip3 install pymysql     2.pip3 install sqlalchemy两个命令从而安装需要的模块

使用

在使用之前首先需要建相应的数据库,而不需要建立表。下面开始:

相关模块导入

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index
from sqlalchemy.orm import sessionmaker, relationship
from  sqlalchemy import  and_,or_

建立连接

engine = create_engine("mysql+pymysql://root:[email protected]:3306/pythondatabase")
engine = create_engine("mysql+pymysql://root:[email protected]:3306/pythondatabase?charset=utf8", echo = True)
#建立连接
#当然推荐上面第二种的方式,一是可以支持中文,二是可以在Pycharm_console中看到创建过程
Base = declarative_base() #建立基类,就是数据库

创建表

1 class Users(Base):
2     __tablename__ = user1  #创建表名
3 
4     id = Column(Integer,primary_key=True,autoincrement=True)
5     #设立自增,主键等
6     username = Column(String(20),index=True)#建立索引
7     password = Column(String(20),unique=True)#代表唯一
  
   def __repr__(self):#可加入从而查看表的属性
  return self.username#如

生成表与删掉表

def init_db():
    Base.metadata.create_all(engine)

def drop_db():
    Base.metadata.drop_all(engine)
#可直接写,也可以以两个函数的方式使用,反正都是一样

增删改查

这个需要首先建立session对象,从而进一步使用增删改查

1 MySession = sessionmaker(bind=engine)
2 session = MySession()#session提供响应的增删改查

增加(一个)

1 ed_user = Users(id=5,username="黎明",password="123456")
2 session.add(ed_user)
3 session.commit()

增加(多个)

1  session.add_all([
2      Users(id=6,username="alex1", password=456),
3      Users(id=7,username="alex2", password=789),
4  ])
5  session.commit()#实现操作,但凡涉及修改都需要commit()

删除

1 session.query(Users).filter(Users.id > 2).delete()
2 session.commit()
3 #这个和sql语句差不多

 

改变

1 session.query(Users).filter(Users.id > 2).update({"username" : "099"})
2 session.query(Users).filter(Users.id > 2).update({Users.username: Users.username + "099"}, synchronize_session=False)
3 session.query(Users).filter(Users.id > 2).update({"num": Users.num + 1}, synchronize_session="evaluate")
4 session.commit()

 

查询

session.query(Users).all()
#查询所有

for row in session.query(Users).order_by(Users.id):
    print(row)
#查询按照 id排序

for row in session.query(Users).filter(and_(Users.id==5,Users.username=="liming")):
    print(row)

for row in session.query(Users).filter(or_(Users.username=="alex1",Users.username=="liming")):
    print(row)
#设置过滤条件

print(session.query(Users))#在没有.all的条件下是其原生方法

等待补充。。。。。

 

 

 

 

 

 

 

 

 

 

 















以上是关于基于Python的SQLAlchemy的操作的主要内容,如果未能解决你的问题,请参考以下文章

Python3之sqlalchemy

SQLALchemy之介绍,基本使用

python第四十五天 (SQLAlchemy) 的操作

Flask-SQLAlchemy操作

Python操作 RabbitMQRedisMemcacheSQLAlchemy

SQLALchemy之介绍,基本使用