導航:首頁 > 編程語言 > python3flaskmysql

python3flaskmysql

發布時間:2022-04-03 05:05:57

『壹』 在python3下怎樣用flask-sqlalchemy對mysql資料庫操作

假設你已經安裝了sqlalchemy和mysql資料庫

1、Python中安裝pymysql3擴展
pip pymysql3
(sqlalchemy只是個ORM,針對不同資料庫需要安裝資料庫鏈接服務)
2、代碼中添加:
import pymysql
pymysql.install_as_MySQLdb()
3、用於鏈接的鏈接字元串是:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost/DBName'

db=SQLAlchemy(app)
4、這樣就可以連上mysql 了,需要注意的是用 sqlalchemy創建的實體,
需要現在mysql中運行
CREATE Database dbname
創建資料庫
再在python的shell中運行db.create_all()
才能創建表
否則會提示找不到資料庫錯誤

『貳』 python flask 部署到哪裡

python3下用flask-sqlalchemy對mysql資料庫操作案例:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
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

admin = User('admin', '[email protected]')

db.create_all() # In case user table doesn't exists already. Else remove it.

db.session.add(admin)

db.session.commit() # This is needed to write the changes to database

User.query.all()

User.query.filter_by(username='admin').first()

『叄』 在python3下怎樣用flask-sqlalchemy對mysql資料庫操作

db.session.execute("select xxx",bind=db.get_engine(current_app,bind="sqlite_test")).fetchall() 如果您對我的回答有不滿意的地方,還請您繼續追問; 答題不易,互相理解,互相幫助!

『肆』 在python3下怎樣用flask-sqlalchemy對mysql資料庫操作

app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:19931218@localhost/test'app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=Truedb=SQLAlchemy(app)classUser(db.Model):
__tablename__='user'
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
fromsql_learnimportdb,User
importpymysql
db.create_all()#創建相應的表
#user_Susan=User(username='Susan',email='[email protected]')
#db.session.add(user_Susan)
#user_Susan.username='Susan_2'
#db.session.add(user_Susan)
#db.session.commit()
#print(db.session.query(User,User.id,User.username).all())#這里返回的是一個元組,每一個對象還是一個元組,包含User類,id,username
#print(User.query.filter_by(username='Susan').all())#flask的查詢對象返回User的對象user=User.query.filter_by(username='Susan').first()user.username='Susan_wifi'db.session.add(user)
db.session.commit()

『伍』 新手求教 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

就可以了。

『陸』 在python3下怎樣用flask-sqlalchemy對mysql資料庫操作

python3下用flask-sqlalchemy對mysql資料庫操作案例:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
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

admin = User('admin', '[email protected]')

db.create_all() # In case user table doesn't exists already. Else remove it.

db.session.add(admin)

db.session.commit() # This is needed to write the changes to database

User.query.all()

User.query.filter_by(username='admin').first()

『柒』 Python3 使用flask 怎麼捕獲異常,返回自定義消息呢。比如連接mysql錯誤,我直接給出個友好提示

flask我不知道,但是try可以處理所有異常,而且可以自定義輸出的錯誤內容

try:
print(a)
exceptExceptionase:
print('error:{}'.format(e))

運行結果:

『捌』 在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
就可以了。

『玖』 在python3下怎樣用flask-sqlalchemy對mysql資料庫操作

以 Debian/Ubuntu 為例(請確保有管理員許可權):
1.MySQL
代碼如下:
apt-get install mysql-server
apt-get install mysql-client
apt-get install libmysqlclient15-dev

2.python-mysqldb
代碼如下:
apt-get install python-mysqldb

3.easy_install
代碼如下:
wget http:// peak.telecommunity.com/dist/ez_setup.py

python ez_setup.py
4.MySQL-Python
代碼如下:
easy_install MySQL-Python

5.SQLAlchemy
代碼如下:
easy_install SQLAlchemy

6、安裝完成後使用下面代碼測試連接
代碼如下:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

DB_CONNECT_STRING = 'mysql+mysqldb://root:123@localhost/ooxx?charset=utf8'
engine = create_engine(DB_CONNECT_STRING, echo=True)
DB_Session = sessionmaker(bind=engine)
session = DB_Session()

7、數據操作(增刪改查)
代碼如下:
from sqlalchemy import func, or_, not_

user = User(name='a')
session.add(user)
user = User(name='b')
session.add(user)
user = User(name='a')
session.add(user)
user = User()
session.add(user)
session.commit()

query = session.query(User)
print query # 顯示SQL 語句
print query.statement # 同上
for user in query: # 遍歷時查詢
print user.name
print query.all() # 返回的是一個類似列表的對象
print query.first().name # 記錄不存在時,first() 會返回 None
# print query.one().name # 不存在,或有多行記錄時會拋出異常
print query.filter(User.id == 2).first().name
print query.get(2).name # 以主鍵獲取,等效於上句
print query.filter('id = 2').first().name # 支持字元串

query2 = session.query(User.name)
print query2.all() # 每行是個元組
print query2.limit(1).all() # 最多返回 1 條記錄
print query2.offset(1).all() # 從第 2 條記錄開始返回
print query2.order_by(User.name).all()
print query2.order_by('name').all()
print query2.order_by(User.name.desc()).all()
print query2.order_by('name desc').all()
print session.query(User.id).order_by(User.name.desc(), User.id).all()

print query2.filter(User.id == 1).scalar() # 如果有記錄,返回第一條記錄的第一個元素
print session.query('id').select_from(User).filter('id = 1').scalar()
print query2.filter(User.id > 1, User.name != 'a').scalar() # and
query3 = query2.filter(User.id > 1) # 多次拼接的 filter 也是 and
query3 = query3.filter(User.name != 'a')
print query3.scalar()
print query2.filter(or_(User.id == 1, User.id == 2)).all() # or
print query2.filter(User.id.in_((1, 2))).all() # in

query4 = session.query(User.id)
print query4.filter(User.name == None).scalar()
print query4.filter('name is null').scalar()
print query4.filter(not_(User.name == None)).all() # not
print query4.filter(User.name != None).all()

print query4.count()
print session.query(func.count('*')).select_from(User).scalar()
print session.query(func.count('1')).select_from(User).scalar()
print session.query(func.count(User.id)).scalar()
print session.query(func.count('*')).filter(User.id > 0).scalar() # filter() 中包含 User,因此不需要指定表
print session.query(func.count('*')).filter(User.name == 'a').limit(1).scalar() == 1 # 可以用 limit() 限制 count() 的返回數
print session.query(func.sum(User.id)).scalar()
print session.query(func.now()).scalar() # func 後可以跟任意函數名,只要該資料庫支持
print session.query(func.current_timestamp()).scalar()
print session.query(func.md5(User.name)).filter(User.id == 1).scalar()

query.filter(User.id == 1).update({User.name: 'c'})
user = query.get(1)
print user.name

user.name = 'd'
session.flush() # 寫資料庫,但並不提交
print query.get(1).name

session.delete(user)
session.flush()
print query.get(1)

session.rollback()
print query.get(1).name
query.filter(User.id == 1).delete()
session.commit()
print query.get(1)

閱讀全文

與python3flaskmysql相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:61
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1002
命令zpa 瀏覽:285
python編譯器小程序 瀏覽:944
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:592
安卓卸載組件應用怎麼安裝 瀏覽:912
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:432
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:399
夢幻端游長安地圖互通源碼 瀏覽:745
電腦本地文件如何上傳伺服器 瀏覽:313