SQLAlchemy是Python編程語言下的一款開源軟件,提供了SQL工具包及對(duì)象關(guān)系映射(ORM)工具亏吝。
值得特別注意的是ORM,全稱object-relational mapping,即對(duì)象關(guān)系映射捕儒。再簡(jiǎn)單點(diǎn)來講,ORM就是將python的類映射到數(shù)據(jù)庫(kù)中的表邓夕,一個(gè)類對(duì)應(yīng)一個(gè)表刘莹。
第一步,(如有提示焚刚,需要更新下pip点弯,使用命令行sudo pip install --upgrade pip),安裝SQLAlchemy
sudo pip install sqlalchemy
出現(xiàn)以下信息即表示安裝成功矿咕,最新版本1.2.5抢肛。
Collecting sqlalchemy
Installing collected packages: sqlalchemy
Successfully installed sqlalchemy-1.2.5
接著啟動(dòng)MySQL 服務(wù)狼钮,輸入mysql -u root -p,回車捡絮,再輸入密碼熬芜,回車,以下信息說明MySQL已經(jīng)正常啟動(dòng)了福稳。
mysql
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù):
CREATE DATABASE 數(shù)據(jù)庫(kù)名稱
創(chuàng)建一個(gè)類涎拉,取名叫User吧
# 創(chuàng)建對(duì)象的基類
Base = declarative_base()
# 定義User對(duì)象
class User(Base):
# 表的名字
__tablename__ = 'school'
# 表的結(jié)構(gòu)
id = Column(Integer, primary_key=True)
school_name = Column(String(20), nullable=False)
往表中添加記錄
def populate(engine):
Base.metadata.bind = engine
# 創(chuàng)建DBSession類型,即數(shù)據(jù)庫(kù)會(huì)話類
DBSession = sessionmaker(bind=engine)
# 創(chuàng)建session對(duì)象的圆,有了session鼓拧,就可以用它去執(zhí)行SQL了
session = DBSession()
user_info = User(school_name='清華')
# 添加到session
session.add(user_info)
session.commit()
連接數(shù)據(jù)庫(kù),并開始執(zhí)行
# create_engine()用來初始化數(shù)據(jù)庫(kù)連接越妈。
# SQLAlchemy用一個(gè)字符串表示連接信息:'數(shù)據(jù)庫(kù)類型+數(shù)據(jù)庫(kù)驅(qū)動(dòng)名稱://用戶名:口令@機(jī)器地址:端口號(hào)/數(shù)據(jù)庫(kù)名'
engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/dbname')
#找到Base下的所有子類季俩,并在數(shù)據(jù)庫(kù)中建立這些表
Base.metadata.create_all(engine)
populate(engine)
Base.metadata.bind = engine
DBSession = sessionmaker()
DBSession.bind = engine
session = DBSession()
# 獲取User對(duì)象中的第一條數(shù)據(jù)
user = session.query(User).first()
哦,別忘了安裝MySQL驅(qū)動(dòng)梅掠,不然會(huì)報(bào)錯(cuò):ImportError: No module named mysql酌住,在這里用的是mysqlconnector驅(qū)動(dòng),所以:
sudo pip install mysql-connector
目前阎抒,有兩個(gè)MySQL驅(qū)動(dòng):
mysql-connector-python:是MySQL官方的純Python驅(qū)動(dòng)赂韵;
MySQL-python:是封裝了MySQL C驅(qū)動(dòng)的Python驅(qū)動(dòng)。
這里有兩篇不錯(cuò)的介紹SQLAlchemy的博客
SQLAlchemy 教程 —— 基礎(chǔ)入門篇
SQLAlchemy使用經(jīng)驗(yàn)