tornado框架SQLAlchemy的操作

2021-08-09 17:59:23 字數 3880 閱讀 1386

在用到python的一些框架裡,需要進行前後端資料互動,其中資料庫的連線是必不可少的,之前自己使用sqlalchemy在進行資料庫連線時遇到了很多問題,以及一些流程不是很清楚。所以花了點時間進行了一下流程梳理。

1.首先建立乙個空py檔案(這裡命名為connect.py),匯入包:

from sqlalchemy import create_engine
接下來設定連線資料庫(以mysql為例)所需要的資訊,包括使用者名稱、密碼、埠號、ip以及要使用的資料庫名字等資訊,例如:

hostname = '127.0.0.1'

port = '3306'

database = 'mydb'

username = 'root'

password = '123456'

然後設定乙個字串的格式:

db_url='mysql+pymysql://{}:{}@{}/{}?charset=utf8'.format(

username,

password,

hostname,

database

)

建立乙個引擎:

engine =create_engine(db_url)
將引擎作為引數匯入declarative_base()方法,返回乙個類:

from sqlalchemy.ext.declarative import declarative_base

base = declarative_base(engine)

同時需要建立乙個會話窗,即對映:

from sqlalchemy.orm import sessionmaker

session = sessionmaker(engine)

session = session()

驗證是否成功可以在尾端進行如下操作:

if

__name__=='__main__':

print(dir(base))

print(dir(session))

2.新建乙個py檔案(這裡命名為user_modules.py),用來建立乙個user表單。

首先從sqlalchemy匯入建立資料庫記錄的格式,同時將上個connect.py檔案裡建立的basesession匯入進來,下面也需要用到datetime的模組,將其也匯入進來:

from datetime import datetime

from connect import base,session

from sqlalchemy import column,integer,string,datetime,boolean

然後定義乙個user類,繼承base

class

user

(base):

__tablename__ = 'user'

#**名字

id = column(integer,primary_key=true,autoincrement=true)

username = column(string(20),nullable=false)

password = column(string(50))

creatime = column(datetime,default=datetime.now)

_locked = column(boolean,default=false,nullable=false)

# 自己封裝查詢方法

@classmethod

defget_all

(cls):

return session.query(cls).all()

@classmethod

defget_id

(cls,id):

return session.query(cls).filter_by(id=id).all()

@classmethod

defget_username

(cls,username):

return session.query(cls).filter_by(username=username).all()

@property

deflocked

(self):

return self._locked

def__repr__

(self):

return

""%(

self.id,

self.username,

self.password,

self.creatime,

self._locked

)

最後再執行建立:

if __name__=='__main__':

base.metadata.create_all()

可以登入資料庫檢視一下user表是否被建立出來。

3.最後再建立乙個py檔案(這裡命名為test_user.py),用來測試對user表的「增刪改查」:

from user_modules import user

from connect import session

#增def

add_user

():# person = user(username='suyn',password='123456')

# session.add(person)

session.add_all([user(username='der',password='asdfas'),user(username='sa',password='mima99')])

session.commit()

#刪def

delete_user

(): row = session.query(user).filter_by(username='der')[0]

print(row)

session.delete(row)

session.commit()

#改def

update_user

(): session.query(user).filter_by(id=3).update()

session.commit()

#查def

query_user

(): row = session.query(user).filter_by(username='suyn').all()

row = session.query(user).filter(user.username=='suyn').all()

print(row[0]._locked)

session.commit()

最後可以進行驗證:

if __name__=='__main__':

# 驗證

# add_user()

# delete_user()

# update_user()

# query_user()

print(user.get_id(1)) # 對上頁封裝的查詢進行驗證

接下來就告一段落啦~

tornado框架介紹

tar xvzf tornado 1.2.1.tar.gz cd tornado 1.2.1 python setup.py build sudo python setup.py install 安裝要求 需要先安裝 python2.7 mac os x 10.6 python 2.6 sudo e...

Tornado 框架的使用

tornado是乙個輕量級python的web框架,他是非阻塞式的,而且速度非常快.得利於其 非阻塞的方式和對 epoll 的運用,tornado 每秒可以處理數以千計的連線,這意味著對於實時 web 服務來說,tornado 是乙個理想的 web 框架。usr bin env python cod...

python web框架之Tornado的簡單使用

python web框架有很多,比如常用的有django,flask等。今天主要介紹tornado tornado是乙個用python寫的相對簡單的 不設障礙的web伺服器架構,用以處理上萬的同時的連線口,讓實時的web服務通暢起來。雖然跟現在的一些用python寫的web架構相似,比如django...