pip install sqlalchemy
import sqlalchemy from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
#建立数据库链接实例(#"数据库类型+数据库模块://用户名:密码@主机/库名") db=sqlalchemy.create_engine("mysql+pymysql://root:q1q1q1@localhost/a")
base = declarative_base(db)
class Student(base): __tablename__ = "student" id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True) name = sqlalchemy.Column(sqlalchemy.String(32)) age = sqlalchemy.Column(sqlalchemy.String(32))
base.metadata返回sqlalchemy.schema.MetaData对象,它是全部Table对象的集合,调用create_all()该对象会触发CREATE TABLE语句,若是数据库还不存在这些表的话。python
if __name__ == "__main__": base.metadata.create_all(db)
脚本运行前a数据库中的表:
运行上述代码以后,a数据库表:
mysql
cursor = sessionmaker(bind=db) #获得的时一个类 session = cursor() #实例
①插入一条数据web
stu = Student( id = 1, name = "张1", age = 18 ) session.add(stu) session.commit()
②同时插入多条数据sql
session.add_all([ Student(id=2,name="张2",age=19), Student(id=3,name="张3",age=20) ]) session.commit()
①查询全部数据数据库
all_data = session.query(Student).all()#获得的是一个可迭代对象 for data in all_data: print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))
②根据条件查询多条数据session
many_data = session.query(Student).filter_by(age=18) print(many_data)#实际是一个sql查询语句,其仍是一个存储一个对象的带迭代内容 for data in many_data: print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))
还能够经过序列解包的方式获取数据ide
many_data = session.query(Student).filter_by(age=18) data, = many_data print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))
③查询一条数据svg
data = session.query(Student).get(ident=3) #查一条,只能以主键查 print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))
#先查询一条 data = session.query(Student).get(ident=3) #而后删除 session.delete(data) #而后提交操做 session.commit()
# 先查询一条 data = session.query(Student).get(ident=2) #而后删除 data.name = "老李头" #而后提交操做 session.commit()