如果該數 據庫支援 自增列 ,則 sqlalchemy 預設 自動 設定 表中第乙個 型別 為整形 的主鍵 為自增列
orm的優點:
隱藏了資料訪問細節,「封閉」的通用資料庫互動,orm的核心。他使得我們的通用資料庫互動變得簡單易行,並且完全不用考慮該死的sql語句。快速開發,由此而來。
orm使我們構造固化資料結構變得簡單易行。
缺點:
無可避免的,自動化意味著對映和關聯管理,代價是犧牲效能(早期,這是所有不喜歡orm人的共同點)。現在的各種orm框架都在嘗試使用各種方法來減輕這塊(lazyload,cache),效果還是很顯著的。
在python中,最有名的orm框架是sqlalchemy。使用者包括openstack\dropbox等知名公司或應用,主要使用者列表
engine使用schema type建立乙個特定的結構物件,之後通過sql expression language將該物件轉換成sql語句,然後通過 connectionpooling 連線資料庫,再然後通過 dialect 執行sql,並獲取結果。mysql-python連線
mysql+mysqldb://:@[:]/
create table user (
id integer not null auto_increment,
name varchar(32),
password varchar(64),
primary key (id)
)
orm簡單使用
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import column, integer, string
#建立資料庫連線,但是此時並沒有去連線資料庫,而是第一次執行sql的時候才會連線
engine = create_engine("mysql+pymysql://root:alex3714@localhost/testdb",
encoding='utf-8', echo=true)
base = declarative_base() #生成orm基類
class user(base):
__tablename__ = 'user' #表名
id = column(integer, primary_key=true)
name = column(string(32))
password = column(string(64))
base.metadata.create_all(engine) #建立表結構
from sqlalchemy import table, metadata, column, integer, string, foreignkey
metadata = metadata()
user = table('user', metadata,
column('id', integer, primary_key=true),
column('name', string(50)),
column('fullname', string(50)),
column('password', string(12))
)class user(object):
def __init__(self, name, fullname, password):
self.name = name
self.fullname = fullname
self.password = password
session_class = sessionmaker(bind=engine) #建立與資料庫的會話session class ,注意,這裡返回給session的是個class,不是例項
session = session_class() #生成session例項
user_obj = user(name="alex",password="alex3714") #生成你要建立的資料物件
#此時還沒建立物件呢,不信你列印一下id發現還是none
session.add(user_obj) #把要建立的資料物件新增到這個session裡, 一會統一建立
#此時也依然還沒建立
session.commit() #現此才統一提交,建立資料
my_user = session.query(user).filter_by(name="alex").first()
print(my_user)
結果<main.user object at 0x105b4ba90>返回的資料對映成乙個物件了
取出資料
print(my_user.id,my_user.name,my_user.password)
輸出1 alex alex3714
變成可讀
def __repr__(self):
return "" % (
self.name, self.password)
當print的時候會呼叫__repr__,而實際上是呼叫的 __str__,內部會把__str__ = __repr__ python自動化之selenium
一 環境 1 selenium 安裝 pip install selenium 版本號 後可省略,預設安裝最新版本 檢視 pip show selenium 解除安裝 pip uninstall selenium 2 瀏覽器驅動 以chrome為例 國內可訪問 windows 解壓後將驅動移動至ch...
python之requests介面自動化
在進行介面自動化測試時,有好多介面都基於登陸介面的響應值來關聯進行操作的,在次之前試了很多方法,都沒有成功,其實很簡單用session來做。coding utf 8 import requests 在登陸模組建立乙個全域性session,在其他介面操作時帶入登陸時的session,保持session...
Selenium自動化測試之python應用
selenium支援多種程式語言,本篇介紹selenium自動化測試之python應用,基礎入門篇。環境搭建 pycharm python3.7 selenium 使用最新版 2 python3.7 安裝成功後,不需配置環境變數 4 在cmd視窗中執行 pip install selenium 5 ...