在用到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檔案裡建立的base和session匯入進來,下面也需要用到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...