環境:python3.7,pycharm,mysql ORM(Object Relational Mapper) 對象關係映射(ORM)是一種允許您使用面向對象的範例從資料庫查詢和操作數據的技術,sqlalchemy是實現ORM技術其中一個庫(框架)。 優勢 簡化開發,因為它可以自動執行對象到表和表 ...
環境:python3.7,pycharm,mysql
ORM(Object-Relational-Mapper)
對象關係映射(ORM)是一種允許您使用面向對象的範例從資料庫查詢和操作數據的技術,sqlalchemy是實現ORM技術其中一個庫(框架)。
優勢
- 簡化開發,因為它可以自動執行對象到表和表到對象的轉換,從而降低開發和維護成本
- 與嵌入式SQL和手寫存儲過程相比,代碼更少
- 應用程式層中的透明對象緩存,提高了系統性能
- 優化的解決方案使應用程式更快,更易於維護
映射類型
sqlalchemy操作mysql資料庫
1.導入
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
2.鏈接資料庫
db = sqlalchemy.create_engine("mysql+pymysql://root:11111111@localhost/demo")
3.創建一個繼承基類
base = declarative_base(db)
4.映射
class User(base):
__tablename__ = 'student'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(32))
5.創建表
if __name__ == '__main__':
base.metadata.create_all(db)
6.操作資料庫
1.導入
from sqlalchemy.orm import sessionmaker
2.綁定一個查詢實例
session = sessionmaker(bind=db)
session = session()
3.插入
######插入單條數據
user =User(
id = 4,
name='python'
)
session.add(user)
session.commit()
######插入多條數據
session.add_all(
[
User(id=5,name='java'),
User(id=6,name='php')
]
)
session.commit()
4.查詢
######查詢多條數據
data = session.query(User).all()
for x in data:
print (x.name)
data = session.query(User).filter(User.name== 'xxxx').all()
######查詢單條數據
data = session.query(User).filter(User.name == 'xxxx').first()
data = session.query(User).filter_by(name='xxxx').first()
######使用get查詢id
data = session.query(User).get(ident = 10)
print (data.name)
5.修改
data = session.query(User).get(10)
print (data)
data.name = 'laoli'
session.merge(data)
session.commit()
或者
session.query(User).filter(User.id == 10).update({User.name:"xxxxx",User.id:11})
session.commit()
6.刪除
data = session.query(User).filter(User.id == 11).first()
session.delete(data)
session.commit()