第一:安裝
sudo easy_install sqlalchemy
第二:基本的使用:
1 先寫個指令碼 嘗試連線mysql ,建立一張表:
#-*- coding: utf-8 -*-
from sqlalchemy import *
import
sqlalchemy.util as util
import
string, sys
from sqlalchemy.databases import
mysql
mysql_engine = create_engine('
mysql://root:password@localhost:3306/db_name?charset=utf8
',encoding = "
utf-8
",echo =true)
#mysql_engine.connect()
metadata =metadata()
#建立users表
users_table = table('
users
', metadata,
column('id
', integer, primary_key=true),
column(
'username
', string(20), nullable =false),
column(
'fullname
', string(20), nullable =false),
column(
'password
', string(20), nullable =false),
mysql_engine='
innodb')
#mysql_engine='innodb' 或者 mysql_engine='myisam' 表型別
metadata.create_all(mysql_engine)
2 建立對映類:
from sqlalchemy importcolumn,integer,string
class
users(base):
__tablename__ = '
users
'id = column(integer,primary_key=true)
name = column(string(50))
fullname = column(string(50))
password = column(string(50))
#email = column(string(250))
def__init__
(self,name,fullname,password):
#def __init__(self,name,fullname,password,email):
self.name =name
self.fullname =fullname
self.password =password
#self.email = email
def__repr__
(self):
return
"" %(self.name,self.fullname,self.password)
from sqlalchemy import *
import
sqlalchemy.util as util
import
string, sys
from sqlalchemy.databases import
mysql
mysql_engine = create_engine('
mysql://root:password@localhost:3306/notewo?charset=utf8
',encoding = "
utf-8
",echo =true)
base.metadata.create_all(mysql_engine)
到了這裡會建立乙個對映類,對映到一張表.
3 然後,如果我們想要增加乙個column,要怎麼辦呢?sqlalchemy 本身是沒有提供這個功能的.不過我們可以通過這個
工具來使用這個功能 .
官方教程
初步學習,使用方法如下:
1 安裝 :
ubuntu@yee:~/notewo/test$ sudo easy_install sqlalchemy-migrate
2 建立乙個repository :
ubuntu@yee:~/notewo$ migrate create notewo "nwo project
"
notewo是專案的目錄名字
3 建立 版本控制:
ubuntu@yee:~/notewo$ python notewo/manage.py version_control mysql://root:password@localhost/notewo notewo
4 檢視當前版本:
ubuntu@yee:~/notewo$ python notewo/manage.py db_version mysql://root:password@localhost/notewo notewo0
5 檢視最後可用的版本:
ubuntu@yee:~/notewo$ python notewo/manage.py version notewo0
6 建立管理指令碼 :如果每次操作都需要輸入url會很煩人
migrate manage manage.py --repository=notewo --url=mysql://root:password@localhost/notewoubuntu@yee:~/notewo$ python manage.py db_version
0
7 demo ,現在我們新增乙個email field :
ubuntu@yee:~/notewo$ python manage.py script "add email column
"ubuntu@yee:~/notewo$ vim notewo/versions/001_add_email_column.py
defupgrade(migrate_engine):
meta = metadata(bind=migrate_engine)
users = table('
users
',meta,autoload=true)
emailc = column('
',string(250))
emailc.create(users)
defdowngrade(migrate_engine):
meta = metadata(bind=migrate_engine)
users = table('
users
',meta,autoload=true)
users.c.email.drop()
ubuntu@yee:~/notewo$ python manage.py upgrade
0 -> 1...
done
比起django 的django_south 是相對麻煩一些的,不夠自動化.不過也夠用,麻煩就麻煩吧.
SQLAlchemy學習筆記
因為後端框架重度使用orm,鑑於sqlalchemy官網沒有中文翻譯,加上經常會被牆,所以搬運些工具到部落格上,以備後用。均為示例,不能直接使用 1 基礎操作 coding utf 8 等於 equals query.filter user.name ed 不等於 not equals query....
python 學習筆記 sqlalchemy
資料庫表是乙個二維表,包含多行多列。把乙個表的內容用python的資料結構表示出來的話,可以用乙個list表示多行,list的每乙個元素是tuple,表示一行記錄,比如,包含id和name的user表 1 michael 2 bob 3 adam python的db api返回的資料結構就是像上面這...
SQLAlchemy實戰詳解
感謝朋友支援本部落格,歡迎共同 交流,由於能力和時間有限,錯誤之處在所難免,歡迎指正!better me的部落格 blog.csdn.net tantexian 簡單查詢 print session.query user all print session.query user.name,user....