### 一對一的關係:
在sqlalchemy中,如果想要將兩個模型對映成一對一的關係,那麼應該在父模型中,指定引用的時候,要傳遞乙個`uselist=false`這個引數進去。就是告訴父模型,以後引用這個從模型的時候,不再是乙個列表了,而是乙個物件了。示例**如下:
1#coding:utf-82#
author: liangjun.chen34
5from sqlalchemy import
create_engine, column, integer, string, text, foreignkey67
from sqlalchemy.ext.declarative import
declarative_base
8from sqlalchemy.orm import
sessionmaker, relationship, backref
910 hostname = '
127.0.0.1
'11 port = 3306
12 database = '
sqlalchemy_first
'13 username = '
root
'14 password = '
123456'15
16 db_uri = '
mysql+pymysql://:@:/?charset=utf8
'.format(
17 username=username, password=password, host=hostname, port=port, dbname=database18)
19 engine =create_engine(db_uri)
20 base =declarative_base(engine)
21 session =sessionmaker(engine)
22 session =session()
232425#
user
26class
user(base):
27__tablename__ = '
user
'28 id = column(integer, primary_key=true, autoincrement=true)
29 username = column(string(50), nullable=false)
3031
#articles = relationship("article")
3233
def__repr__
(self):
34return
"user
".format(self.username)
353637#
userextent
38class
userextend(base):
39__tablename__ = '
userextend
'40 id = column(integer, primary_key=true, autoincrement=true)
41 school = column(string(50))
42 uid = column(integer, foreignkey("
user.id"))
4344 user = relationship("
user
", backref=backref("
extend
", uselist=false))
454647#
article
48class
article(base):
49__tablename__ = '
article
'50 id = column(integer, primary_key=true, autoincrement=true)
51 title = column(string(50), nullable=false)
52 conent = column(text, nullable=false)
53 uid = column(integer, foreignkey("
user.id
", ondelete="
restrict"))
5455
#relation 正向引用, backref反向引用
56 author = relationship("
user
", backref='
articles')
5758
def__repr__
(self):
59return
"article
".format(self.title)
6061
62base.metadata.drop_all()
63base.metadata.create_all()
6465
#一對多
66 user = user(username='
saber')
67#article1 = article(title='title1', conent='content1')68#
article2 = article(title='title2', conent='content2')69#
70#71#
72#session.add(user)73#
session.commit()
74print'-
' * 20
7576
#一對一, 多對一
77 extend1 = userextend(school='
tinghua')
78 user.extend =extend1
79session.add(user)
80 session.commit()
一對一關係
1 共享主鍵方式 共享主鍵方式就是限制兩個資料表的主鍵使用相同的值,通過主鍵形成一對一的對映關係。如 學員的登入帳號資訊和學員的詳細分別存放到兩張不同的表中。表 持久化類 public class student public class stupwd student.hbm.xml cascade...
一對一關係對映
主鍵關聯 兩個關聯的實體在表中具有相同的主鍵值,這個主鍵可只由其中乙個表生成,在另外乙個表中通過對映檔案中使用主鍵的foreign生成機制引用已經生成的主鍵值。student類 public class student public void setcard card card public stu...
一對一關係對映
兩端都需要配置 onetoone,但需要對映外來鍵維護關係的一端,額外新增 joincolumn 屬性。含有主鍵的一方預設是立即載入機制,但可以通過fetch 屬性調整,但是沒有主鍵的一端,無論如何更改fetch,都是立即載入,會額外傳送一條查詢語句。原因是,含有外來鍵的一方可以根據外來鍵判斷是否為...