Django
爲咱們提供了極爲優秀的對象關係模型(ORM),經過 ORM
能夠很方便的將對象操做映射爲對數據庫的操做。html
可是 Django
的 ORM
只能應用在 Django
項目中,爲了在其餘項目中使用 ORM
,能夠選用 sqlalchemy
python
Python
中有不少ORM
庫,可是作的最好的是Django
的ORM
,可是你沒法脫離Django
單獨使用它,除此以外還有sqlalchemy
、SQLObject
、Strom
、peewee
等等
所以本教程接下來介紹如何在普通的 Python
項目中使用 ORM
來操做數據庫,包括基本的對數據庫、數據表、數據行的操做,進階的索引、各類約束,以及高級的事務、鎖、併發版本控制等高級內容。mysql
本教程以 Mysql 爲目標數據庫,使用的 sqlalchemy 版本爲 1.4.15 ,若是想使用其餘數據庫,請查看 Dialects More
Name: SQLAlchemy Version: 1.4.15 Summary: Database Abstraction Library Home-page: http://www.sqlalchemy.org Author: Mike Bayer Author-email: mike_mp@zzzcomputing.com License: MIT Location: c:\users\17293\.virtualenvs\project_jd-wbhajpan\lib\site-packages Requires: greenlet Required-by:
執行一下命令安裝sql
pip install sqlalchemy
使用 sqlalchemy 的代碼充當的是 Mysql 客戶端的角色。數據庫
鏈接數據庫須要驅動程序,sqlalchemy 支持很是多的 Mysql驅動程序。bash
sqlalchemy
官方支持的驅動程序列表:
DBAPI Support
本教程選用 mysqlclient
做爲驅動程序。使用該驅動程序須要如下兩個程序,執行命令安裝他們。服務器
pip install mysql-connector-python-rf pip install mysqlclient
鏈接不一樣數據庫須要不一樣的驅動程序,例如鏈接 SQL Server 有 pymssql 驅動程序。
好了,咱們如今已經有了鏈接 Mysql 的驅動程序了session
class DB: Base = declarative_base() class ProductModel(Base): # 表的名字: __tablename__ = 'product' # 表的結構: id = Column(Integer(), primary_key=True) url = Column(String(256), unique=True) name = Column(String(512)) brand = Column(String(64)) price = Column(Float()) sales_volume = Column(Integer()) score1Count = Column(Integer()) score2Count = Column(Integer()) score3Count = Column(Integer()) score4Count = Column(Integer()) score5Count = Column(Integer()) db_config = { 'db_username': 'root', 'db_password': 'yjcyjc', 'db_host': 'localhost', 'db_port': 3306, 'db_database_name': 'd_test', } # 初始化數據庫鏈接: link_sql = 'mysql+mysqlconnector://{db_username}:{db_password}@{db_host}:' \ '{db_port}/{db_database_name}?' \ 'auth_plugin=mysql_native_password'.format(**db_config) engine = create_engine(link_sql, echo=True) # 建立DBSession類型: DBSession = sessionmaker(bind=engine) Base.metadata.create_all(engine)