當前位置:成語大全網 - 書法字典 - python3下如何用flask-sqlalchemy操作mysql數據庫

python3下如何用flask-sqlalchemy操作mysql數據庫

以Debian/Ubuntu為例(請確保妳有管理員權限):

1.關系型數據庫

代碼如下:

apt-get安裝mysql服務器

apt-get安裝mysql客戶端

apt-get安裝libmysqlclient15-dev

2.python-mysqldb

代碼如下:

apt-get安裝python-mysqldb

3 .簡單安裝

代碼如下:

wget munity.com/dist/ez_setup.py

python ez_setup.py

4.MySQL-Python

代碼如下:

簡單安裝MySQL-Python

5.SQLAlchemy

代碼如下:

easy_install SQLAlchemy

6.安裝後,使用以下代碼測試連接。

代碼如下:

從sqlalchemy導入創建引擎

從sqlalchemy.orm導入會話標記

DB _ CONNECT _ STRING = ' MySQL+mysqldb://root:123 @ localhost/ooxx?' charset=utf8 '

引擎=創建引擎(數據庫連接字符串,回聲=真)

DB _ Session = Session maker(bind =引擎)

會話=數據庫會話()

7、數據操作(添加、刪除和修改)

代碼如下:

from sqlalchemy導入函數,or_,not_

用戶=用戶(名稱='a ')

session.add(用戶)

用戶=用戶(名稱='b ')

session.add(用戶)

用戶=用戶(名稱='a ')

session.add(用戶)

用戶=用戶()

session.add(用戶)

session.commit()

query = session.query(用戶)

打印查詢#顯示SQL語句。

打印查詢.語句#同上

對於查詢中的用戶:#遍歷期間的查詢

打印用戶名

Print query.all() #返回壹個類似列表的對象。

當打印query.first()時。name # record不存在,first()將返回None。

# print query.one()。名稱#不存在,否則當有多行記錄時將引發異常。

打印query.filter(User.id == 2)。首先()。名字

打印query.get(2)。name #是通過主鍵得到的,相當於上面那句話。

PrintQuery。篩選器(' ID = 2 ')。首先()。Name #支持字符串。

query2 = session.query(用戶名)

打印query2.all() #每行是壹個元組。

PrintQuery2.limit (1)。All () #最多返回1條記錄。

PrintQuery2.offset (1)。All () #從第二條記錄返回。

打印query2.order_by(User.name)。全部()

打印query2.order_by('name ')。全部()

打印query2.order_by(User.name.desc())。全部()

打印query2.order_by('姓名desc ')。全部()

打印session.query(用戶id)。order_by(User.name.desc(),User.id)。全部()

print query 2 . filter(user . id = = 1)。Scalar () #如果有記錄,返回第壹條記錄的第壹個元素。

打印session.query('id ')。select_from(用戶)。篩選器(' id = 1 ')。標量()

打印query 2 . filter(user . id & gt;1,用戶名!= 'a ')。標量()#和

query 3 = query 2 . filter(user . id & gt;1) #多次拼接的濾鏡也是和。

query3 = query3.filter(User.name!= 'a ')

打印query3.scalar()

打印query 2 . filter(or _(user . id = = 1,User.id == 2))。all() #或

打印query 2 . filter(user . id . in _((1,2)))。all() # in

query4 = session.query(User.id)

打印query4.filter(User.name == None)。標量()

打印query4.filter('name為null ')。標量()

打印query 4 . filter(not _(user . name = = None))。all() # not

打印query4.filter(User.name!=無)。全部()

打印query4.count()

打印session.query(func.count('*))。select_from(用戶)。標量()

打印session . query(func . count(' 1 '))。select_from(用戶)。標量()

打印session . query(func . count(user . id))。標量()

打印session.query(func.count('*))。過濾器(User.id & gt0).scalar() # filter()包含用戶,因此不需要指定表。

Printsession。查詢(func。計數(' * ')。過濾器(用戶。name =' a ')。極限(1)。Scalar () = = 1 #可以使用limit()來限制count()的返回次數。

打印session.query(func.sum(User.id))。標量()

Printsession。Query (func.now())。Scalar () # func後面可以跟任何函數名,只要數據庫支持。

打印session . query(func . current _ timestamp())。標量()

打印session . query(func . MD5(user . name))。過濾器(User.id == 1)。標量()

query.filter(User.id == 1)。更新({User.name: 'c'})

user = query.get(1)

打印用戶名

user.name = 'd '

Session.flush() #寫入數據庫,但不提交它。

打印query.get(1)。名字

session.delete(用戶)

session.flush()

打印query.get(1)

session.rollback()

打印query.get(1)。名字

query.filter(User.id == 1)。刪除()

session.commit()

打印query.get(1)