1. 程式人生 > >MySQL flask-sqlalchemy學習1

MySQL flask-sqlalchemy學習1

  flask-sqlalchemy搗鼓了蠻久寫點心得,框架安裝就不說了

1.先按文件設定一個配置檔案,比如config.py

按框架要求填上程式碼:


 
#開啟flask伺服器監測
debug = True

#配置flask_sqlalchemy環境
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
#dialect+driver://username:[email protected]:port/database
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql://root:
[email protected]
:3306/flask1' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)# 定義User物件(模板繼承db.Model):class User(db.Model): #命名錶 __tablename__ = 'article' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.TEXT, nullable=False)

這之中dialect+driver://username:[email protected]:port/database
的driver貌似是可以不填。username和password是資料庫的使用者名稱和密碼,dialect是資料庫名

2.然後是檔案呼叫config.py

 

 
#encoding utf-8
from flask import Flask
from config import User,db

app = Flask(__name__)

# 建立新User物件:
new_user = User(title='Bob',content = 'abc')
# 新增到session:
db.session.add(new_user)
# 提交執行,儲存到資料庫:
db.session.commit()

# 建立Query查詢,filter是where條件,最後呼叫one()返回唯一行或者first(),如果呼叫all()則返回所有行:
user = User.query.filter(User.id=='30').one()
# 列印型別和物件的屬性:
print('type:',type(user) )
print('title:',user.title)
print('content:',user.content)
在這之中我嘗試過呼叫all(),然後提示
AttributeError: 'list' object has no attribute 'title' 然後搜尋發現all()的用法:

 

 
user = User.query.all()

查詢還有一個方法是filter_by:

 

 
user = User.query.filter_by(id ='30').one()
3.刪除是使用

 
db.session.delete(user)
,但是需要的是將所查詢到的內容刪除,將查詢到的內容賦值給變數user然後刪除
	實際上在使用時候為了確認是否將資料新增進了MySQL中,開啟MySQL控制檯檢視

 
     mysql> show database; 檢視資料庫中的database列表,
     mysql> use flask1;進入database flask1中,
     mysql> select*from article;檢視article表單資料詳情。

目前基本功能已經實現,出現的問題是存在告警:  c:\...\sqlalchemy\engine\default.py:470: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 480")  cursor.execute(statement, parameters),原因尚不明確在檔案中已經將編碼型別設定成utf8,資料庫檢視如圖1: