sqlalchemy學習筆記

2022-07-20 16:24:14 字數 4102 閱讀 2099

第一:安裝

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 import

column,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 notewo

0

5 檢視最後可用的版本:

ubuntu@yee:~/notewo$ python notewo/manage.py  version notewo

0

6 建立管理指令碼 :如果每次操作都需要輸入url會很煩人

migrate manage manage.py --repository=notewo --url=mysql://root:password@localhost/notewo

ubuntu@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('

email

',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....