安装
在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() #建立基类,就是数据库
创建表
class Users(Base): __tablename__ = 'user1' #创建表名 id = Column(Integer,primary_key=True,autoincrement=True) #设立自增,主键等 username = Column(String(20),index=True)#建立索引 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对象,从而进一步使用增删改查
MySession = sessionmaker(bind=engine) session = MySession()#session提供响应的增删改查
增加(一个)
ed_user = Users(id=5,username=") session.add(ed_user) session.commit()
增加(多个)
session.add_all([ Users(id=6,username='), Users(id=7,username='), ]) session.commit()#实现操作,但凡涉及修改都需要commit()
删除
session.query(Users).filter(Users.id > 2).delete() session.commit() #这个和sql语句差不多
改变
session.query(Users).filter(Users.id > 2).update({"}) session.query(Users).filter(Users.id > 2).update({Users.username: Users.username + "}, synchronize_session=False) session.query(Users).filter(Users.id > 2).update({"num": Users.num + 1}, synchronize_session="evaluate") 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的条件下是其原生方法
等待补充。。。。。