在一般的專案中,簡單的訪問資料庫用pymysql就可以了,手寫一些sql也沒有什麼問題,但是對於乙個大型系統,可能面對多次的資料庫增刪改查操作,如果都用手寫sql實現,**會顯得很難看,開發效率也比較低,這個時候就推薦使用orm框架了。
python的orm框架有很多,我最早接觸的是django的內嵌orm,用起來的確很不錯,但目前並沒有獨立出來。
獨立的框架裡面,比較經典的就是本文的主角sqlalchemy了。
from sqlalchemy importcolumn, string, create_engine, integer
from sqlalchemy.orm import
sessionmaker
from sqlalchemy.ext.declarative import
declarative_base
#建立物件的基類:
base =declarative_base()
#初始化資料庫連線:
engine = create_engine('
mysql+pymysql://root:******@localhost:3306/scheduler')
#定義user物件:
class
user(base):
#表的名字:
__tablename__ = '
user'#
表的結構:
id = column(string(20), primary_key=true)
name = column(string(20))
age =column(integer)
def__repr__
(self):
return
'user(id=,name=,age=)
'.format(id=self.id, name=self.name, age=self.age)
#建立所有定義的表到資料庫中
definit_db():
base.metadata.create_all(engine)
#從資料庫中刪除所有定義的表
defdrop_db():
base.metadata.drop_all(engine)
if__name__ == '
__main__':
drop_db()
init_db()
#建立dbsession型別:
dbsession = sessionmaker(bind=engine)
#建立session物件:
session =dbsession()
#建立新user物件:
new_user = user(id='
7', name='
ali', age=11)
user1 = user(id='
8', name='
mary
', age=12)
user2 = user(id=1, name='
bob', age=12)
#插入資料
session.add(new_user)
session.add_all([user2, user1])
#提交即儲存到資料庫:
session.commit()
#更新資料
session.query(user).filter(user.name == '
ali').update()
#刪除資料
session.query(user).filter(user.id == 1).delete()
session.commit()
#查詢資料
ret =session.query(user).all()
(ret)
session.close()
sqlalchemy 的功能當然不止於此,隨著後面的學習,我會繼續補充到這裡。
參考:
ORM框架試驗
public class orm 新增方法 public int add t obj columnnames columns 0 columnname 列名列表 值的列表 values common.getdbvalue columns 0 columntype,convert.tostring p...
python之Django框架的ORM簡介
databases 2.在與django 專案同名的目錄下的 init py 檔案中寫下如下 告訴django 使用pymysql模組連線mysql資料庫 import pymysql pymysql.install as mysqldb 3.資料庫遷移的時候出現乙個警告 warnings mysq...
開源ORM框架iBATIS
除了hibernate外,另一流行的orm框架ibatis也使用廣泛。兩者的不同的在於,hibernate提供的是 一站式 的orm解決方案,而ibatis提供的是 半自動化 的orm實現。hibernate提供了從pojo到資料庫表的全套對映機制,開發人員往往只需要定義好pojo到資料庫表的對映關...