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()