flask連接mysql資料庫
A. 新手求教 python3 用 flask-sqlalchemy pymysql 連接 mysql
python3 用 flask-sqlalchemy pymysql 連接 mysql
這個問題經常難道新手一下,因為大部分教程里(包括經典的《Flask
Web開發》一書),告訴了我們如何使用flask-sqlalchemy操作sqlite,但在生產環境(線上網站)上,我們肯定是使用MySQL或其
他,而大部分的教程里,又告訴我們flask-sqlalchemy使用MySQL的方式是:
mysql://username:password@server/db
結果我們照葫蘆畫瓢的來一下,發現壓根不行,寫好的網站一跟資料庫沾邊就報錯。
Python和MySQL是「兩個國家的人」,他們互不相通,因而需要一個中間代理,讓雙方互通有無,跟翻譯一樣(這比喻不準確,但足夠你明白意思就行)。翻譯又有很多選擇,不同的翻譯各有特色。
題
主解決問題選擇的翻譯是「flask-mysqldb」,其背後的主子是「MySQL-python」。恩,說到這里你應該知道,「flask-xxx」
這樣的包都是對背後主子進行了適合Flask封裝的插件,跟包子皮一樣,裡面的餡才是重點,「flask-mysqldb」的餡是「MySQL-
python」。
而我要推薦的是另一個翻譯:PyMySQL,這玩意的好處是可以做非同步(「MySQL-python」也可以,個人口味罷了),簡而言之,網站訪問量大了就需要考慮非同步,現在別管這是啥子。這玩意的安裝方式是:
pip install PyMySQL
之後,資料庫連接由:
mysql://username:password@server/db
改為
mysql+pymysql://username:password@server/db
就可以了。
B. 如何根據資料庫中的經緯度在地圖上顯示位置 flask+mysqlmysql
電子地圖標注軟體可以標注位置,可以搜索地圖上本來有的位置和標注的位置,可以把某個標注的位置顯示在地圖中心。軟體有很多功能,請用戶們來體驗吧!
軟體支持電腦在線(離線)地圖查看瀏覽,支持無人機航拍地圖導入!
1.支持谷歌在線(離線)網路地圖,網路衛星地圖,混合衛星地圖,普通地圖,地形地圖,微軟電子地圖,微軟衛星地圖,bing地圖,高德地圖,在軟體界面上可以選擇地圖類型切換;
2.支持1-20級的地圖隨意縮放,滑鼠右鍵拖動漫遊。
3.支持名稱查詢定位,可以輸入地點名稱後定位到所查詢的位置。
4.支持坐標查詢定位,可以輸入坐標數值後定位的所查詢的位置。
5.支持用戶自定義信息,信息高級查詢,查詢結果實時定位。
6.支持在地圖上所選擇的標注能點擊查看詳細信息。
7.支持添加地圖標記,距離測量顯示,地點名稱顯示。
8.支持保存您當前操作的文件,供日後打開再用,保證操作不會丟失。
9.支持添加自定義標識圖標,用戶可以更換圖標。
10.新增批量導入導出數據功能,網路代理設置。
11.新增分類圖層管理。
12.圖標上方顯示文字。
13.支持在地圖上繪制路線。
14.支持gps衛星定位。
15.支持商圈范圍功能。
16.支持出圖帶標注功能。
17.支持列印出圖。
18.支持行政區域邊界及谷歌地球kml文件導入。
C. python flask框架怎麼把A資料庫中查詢出的部分數據導入B資料庫(mysql資料庫)
fromsqlalchemyimporttext
sql=text('selectnamefrompenguins')
result=db.engine.execute(sql)
思路就是用flask執行原生sql語句
寫好查詢A資料庫到B資料庫的語句直接執行即可,效率最高
D. flask怎樣查詢mysql並顯示在頁面上
用 Flask-SQLAlchemy(SQLAlchemy ORM 模塊的 Flask 定製版)。這個在定義 schema、連接資料庫、增刪改查方面都給你提供極大的便利。
這個對象就包含 sqlalchemy 和 sqlalchemy.orm 中的所有函數和助手。此外它還提供一個名為 Model 的類,用於作為聲明模型時的 delarative 基類:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
E. 用flask連接資料庫進行數據可視化時出錯,請大神幫忙看看
shell連接不同的資料庫會有不同的連接命令,像連oracle用sqlplus命令, mysql 用mysql命令,sybase用isql命令
如連接oracle:sqlplus 用戶名/密碼@ip地址[:埠]/service_name [as sysdba]
mysql命令 應該是mysql -u用戶名 -p用戶密碼 -hIP
Access不清楚,access能安裝在unix上嗎?應該只能在windows上才能用吧.
F. 請教flask如何同時連接多個資料庫
shell連接不同的資料庫會有不同的連接命令,像連oracle用sqlplus命令, mysql 用mysql命令,sybase用isql命令
如連接oracle:sqlplus 用戶名/密碼@ip地址[:埠]/service_name [as sysdba]
mysql命令 應該是mysql -u用戶名 -p用戶密碼 -hIP
Access不清楚,access能安裝在unix上嗎?應該只能在windows上才能用吧.
G. 如何用flask實現一個web應用來顯示在mysql資料庫中查詢到的內容
用 Flask-SQLAlchemy(SQLAlchemy ORM 模塊的 Flask 定製版)。這個在定義 schema、連接資料庫、增刪改查方面都提供極大的便利。
這個對象就包含 sqlalchemy 和 sqlalchemy.orm 中的所有函數和助手。此外它還提供一個名為 Model 的類,用於作為聲明模型時的 delarative 基類:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
H. 怎麼用flask+mysql來實現一個簡單的用戶注冊和登陸效果的頁面
用flask+mysql實現用戶的注冊和登錄:
一個簡單的用戶注冊和登錄的頁面,就兩個部分。
涉及到資料庫,存儲用戶數據(注冊),讀出用戶數據(登錄驗證)。搞清楚如何用python連接和操作資料庫即可,還有了解sql資料庫語句,sqlite和mysql差不多的,看幾眼多試幾下就了解了。
網站程序,前端如何發送表單,後端獲取用戶發送的請求,和資料庫中數據驗證是否能夠登錄,然後登錄後如何保存用戶登錄信息,就是使用的cookie,不過在flask中是session(其實session也是cookie,flask把它封裝了下,成了加密的cookie)。
舉例如下:
(fn):
@wraps(fn)
defwrapper(*args,**kwds):
user=session.get('logged_in',None)
ifuser:
returnfn(user=user)
else:
returnredirect(url_for('signin',next=request.path))
[email protected]('/home')@authorizedefhome(**kwds):
username=kwds['user']
returnrender_template('index.html',username=username)#加密存儲密碼_password(password,salt=None):
ifnotsalt:
salt=os.urandom(16).encode('hex')#length32
result=password
foriinrange(3):
result=hashlib.sha256(password+salt).hexdigest()[::2]#length32
returnresult,salt#簡單的錯誤處理classloginError(Exception):
def__init__(self,value):
self.value=value
def__str__(self):
returnrepr(self.value)#注冊登錄(下面的代碼沒有實際運行過)#連接資料庫我是使用的是mysql.connector#http://dev.mysql.com/downloads/connector/python/#寫法和常用的MySQL-python稍有所不同#下面沒有連接資料庫的代碼@app.route('/register/',methods=['GET','POST'])defrequest():
ifrequest.method=='GET':
returnrender_template("register.html")
ifrequest.method=='POST':
#這里最好需要驗證用戶輸入,我就不寫了
u=request.form['username']
p,s=encrypt_password(request.form['password'])
g.db.cursor.execute('INSERTINTOusers(name,password,salt)VALUES(%s,%s,%s)',(u,p,s,)
g.db.commit()
returnredirect(url_for('signin'))@app.route('/signin/',methods=['GET','POST'])defsignin():
ifrequest.method=='GET':
referrer=request.args.get('next','/')
returnrender_template("login.html",next=referrer)
ifrequest.method=='POST':
u=request.form['username']
p=request.form['password']
n=request.form['next']
try:
g.db.cursor.execute('SELECT`name`FROMusersWHEREname=%s',(u,))
ifnotg.db.cursor.fetchone():
raiseloginError(u'錯誤的用戶名或者密碼!')
g.db.cursor.execute('SELECT`salt`,`password`FROMusersWHEREname=%s',(u,))
salt,password=g.db.cursor.fetchone()
ifencrypt_password(p,salt)[0]==password:
session['logged_in']=u
returnredirect(next)
else:
raiseloginError(u'錯誤的用戶名或者密碼!')
exceptloginErrorase:
returnrender_template('login.html',next=next,error=e.value)@app.route('/signout/',methods=['POST'])defsignout():
session.pop('logged_in',None)
returnredirect(url_for('home'))
I. 如何在flask中使用mysql資料庫
1、首先搞明白flask框架中,一個請求的被處理過程,以及頁面是如何渲染的;這一個過程中, 不需要考慮mysql, 你可以直接用list、dict這些數據結構模擬一些數據, 並讓jinja2模板來顯示你的數據
2、學習下mysqldb的使用
3、在flask中使用mysqldb即可
J. 在python3下怎樣用flask-sqlalchemy對mysql資料庫操作
這個問題經常難道新手一下,因為大部分教程里(包括經典的《Flask Web開發》一書),告訴了我們如何使用flask-sqlalchemy操作sqlite,但在生產環境(線上網站)上,我們肯定是使用MySQL或其他,而大部分的教程里,又告訴我們flask-sqlalchemy使用MySQL的方式是:
mysql://username:password@server/db
結果我們照葫蘆畫瓢的來一下,發現壓根不行,寫好的網站一跟資料庫沾邊就報錯。
Python和MySQL是「兩個國家的人」,他們互不相通,因而需要一個中間代理,讓雙方互通有無,跟翻譯一樣(這比喻不準確,但足夠你明白意思就行)。翻譯又有很多選擇,不同的翻譯各有特色。
題主解決問題選擇的翻譯是「flask-mysqldb」,其背後的主子是「MySQL-python」。恩,說到這里你應該知道,「flask-xxx」這樣的包都是對背後主子進行了適合Flask封裝的插件,跟包子皮一樣,裡面的餡才是重點,「flask-mysqldb」的餡是「MySQL-python」。
而我要推薦的是另一個翻譯:PyMySQL,這玩意的好處是可以做非同步(「MySQL-python」也可以,個人口味罷了),簡而言之,網站訪問量大了就需要考慮非同步,現在別管這是啥子。這玩意的安裝方式是:
pip install PyMySQL
之後,資料庫連接由:
mysql://username:password@server/db
改為
mysql+pymysql://username:password@server/db
就可以了。