基于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的操作的主要内容,如果未能解决你的问题,请参考以下文章