# -*- coding:utf-8 -*-from sqlalchemy import create_engine, column, integer, string, foreignkey, index
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker
from django.db import models
base = declarative_base()
class hobby(base):
__tablename__ = 'hobby'
id = column(integer, primary_key = true)
caption = column(string(50), default = '籃球')
class person(base):
__tablename__ = 'person'
nid = column(integer, primary_key = true)
name = column(string(32), index = true, nullable = true)
hobby_id = column(integer, foreignkey("hobby.id"))
# hobby屬性不管有沒有資料庫都不會生成這個字段,該字段只作為屬性正向和反向關聯hobby
hobby = relationship("hobby", backref = 'pers')
# 建立連線池,pool_size限制連線數10個,max_overflow設定最多多2個連線,也就是最多12個連線。
engine = create_engine("mysql+pymysql:", max_overflow=2, pool_size=10)
session = sessionmaker(bind = engine)
# 從連線池中獲取連線
session = session()
# 查詢一,直接查詢表person的資料
obj1 = session.query(models.person).all()
for row in obj1:
print(row.name, row.hobby_id)
# 查詢二,person和hobby的關聯查詢,使用join方式
obj2 = session.query(models.person.name, models.hobby.caption).join(models.hobby, isouter = true).all()
for row in obj2:
print(row[0].name, row[1].caption)
# 查詢三,person和hobby的關聯查詢,使用relationship方式,正向關聯
obj3 = session.query(models.person).all()
for row in obj3:
print(row.name, row.hobby.caption)
# 查詢四,查詢喜歡籃球的所有人,使用relationship方式,反向向關聯
obj4 = session.query(models.hobby).filter(models.hobby.id == 2).first()
persons = obj4.pers
for row in persons:
print(row.name)
# 關閉資料庫連線
session.close()
***********************************===
#實現根據列表值拿到下標寫到資料庫
def enums(items):
enums_index = dict(enumerate(items))
class enums(object):
def __init__(self):
for v, i in enums_index.items():
setattr(self, i, v)
def __getitem__(self, val):
return enums_index.get(val)
def __iter__(self):
return iter(items)
return enums()
refreshstatus = enums([
"pending", "ready", "working", "commited", "successed",
"merged", "aborted", "failed", "exceed",
])print refreshstatus.ready
#列印出ready的index為1.
python指令碼使用Django的ORM
如果你想通過自己建立的python檔案在django專案中使用django的models,那麼就需要呼叫django的環境 import os if name main os.environ.setdefault django settings module bms.settings manage....
python經典orm框架sqlalchemy
在一般的專案中,簡單的訪問資料庫用pymysql就可以了,手寫一些sql也沒有什麼問題,但是對於乙個大型系統,可能面對多次的資料庫增刪改查操作,如果都用手寫sql實現,會顯得很難看,開發效率也比較低,這個時候就推薦使用orm框架了。python的orm框架有很多,我最早接觸的是django的內嵌or...
python 資料模型orm
在 init py增加,因為預設的mysqldb不支援python3 import pymysql pymysql.install as mysqldb 建立表from django.db import models create your models here.圖書管理系統,書 作者 出版社 出...