Python自動化之sqlalchemy

2022-03-29 20:27:06 字數 2996 閱讀 4191

如果該數 據庫支援 自增列 ,則 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 ...