1. 程式人生 > >python3使用flask-sqlalchemy操作mysql

python3使用flask-sqlalchemy操作mysql

   由於 MySQL-python 不支援 Python 3(MySQL-3.23 through 5.5 and Python-2.4 through 2.7 are currently supported),python3下使用flask-sqlalchemy時,安裝的命令是:

pip install pymysql
pip install flask-sqlalchemy

  相關程式碼如下:

# config.py

SECRET_KEY = 'flaskMysql'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:[email protected]
:port/dbname' SQLALCHEMY_TRACK_MODIFICATIONS = True DEBUG = True
# _init_.py

from flask import Flask, render_template, jsonify
from db_mysql import db

app = Flask(__name__) # 新建app物件
app.config.from_object('config') # 載入配置資訊,其中有資料庫的配置資訊,包含在SQLALCHEMY_DATABASE_URI中


# 初始化db,並建立models中定義的表格
with app.app_context(): # 新增這一句,否則會報資料庫找不到application和context錯誤
    db.init_app(app) # 初始化db
    db.create_all() # 建立所有未建立的table
#db_mysql.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True)
    username = db.Column(db.String(32), nullable=False, unique=True, server_default='', index=True)
    role_id = db.Column(db.Integer, nullable=False, server_default='0')

    def __init__(self,username,role_id):
        self.username = username
        self.role_id = role_id

    def __repr__(self):
        return '<User %r,Role id %r>' %(self.username,self.role_id)

class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True)
    name = db.Column(db.String(16), nullable=False, server_default='', unique=True)

    def __init__(self,name):
        self.name = name

    def __repr__(self):
        return '<Role %r>' % self.name

資料庫關聯操作:

#按使用者名稱摸糊查詢
User.query.join(Role).filter(Users.username.like('%xx%'))
#select xxx from User inner join Role on user.role_id=role.id where user.username like '%xx%'

#左外聯接(left join)
User.query.outerjoin(Role).filter(Users.username.like('%xx%'))
#select xxx from User left outer join Role on user.role_id=role.id where user.username like '%xx%'

#以上是已經設定好外來鍵,它自動找到關聯的欄位.也可以自己指定:
User.query.join(Role,User.role_id==Role.id).filter(User.username.like('%xx%'))
#select xxx from User inner join User on user.role_id=role.id where user.username like '%xx%'

相關推薦

使用SQLAlchemy操作MYSQL黑科技之 屬性訂制

relation check kref sql 黑科技 ack ada generate user 1 class Role(UserMixin, db.Model): 2 __tablename__ = ‘Role‘ 3 id = db.Colum

通過sqlalchemy操作mysql

Coding user abc base ati 實例 對象 metadata maker # 安裝 pip3 install sqlalchemy import sqlalchemyfrom sqlalchemy import create_enginefrom sqla

python3使用flask-sqlalchemy操作mysql

   由於 MySQL-python 不支援 Python 3(MySQL-3.23 through 5.5 and Python-2.4 through 2.7 are currently supported),python3下使用flask-sqlalchemy時,安裝的

Flask之SQLAlchemy操作mysql

這裡我們來學習下python操作mysql。以下環境都是在Ubuntu 18.04當中。 flask使用SQLAlchemy來操作mysql。 安裝 首先我們要安裝mysql-python pip install mysql-python

Python之MysqlSQLAlchemy操作總結

pla values 兩個 調用 聯合 判斷 null 替換 python3 一、Mysql命令總結 1.創建庫 create database test1; 2.授權一個用戶 grant all privileges on *.* to ‘feng‘@‘%‘ identi

pymysql和sqlalchemy模塊操作mysql數據庫

stat not null 訪問 ons rst rim 作用 roo llb 這兩個模塊可以直接通過pip安裝: 打開mysql創建幾個表: CREATE TABLE `student_age`( `id` int not null, `age` int

Python3:sqlalchemymysql數據庫操作,非sql語句

quest 用戶 prim bind afa make -c 細節 strip() Python3:sqlalchemy對mysql數據庫操作,非sql語句 # python3 # author lizm # datetime 2018-02-01 10:00:00 #

【轉】MySQL— pymysql and SQLAlchemy Python開發【第十九篇】:Python操作MySQL

【轉】MySQL— pymysql and SQLAlchemy 目錄 一、pymysql 二、SQLAlchemy 一、pymysql pymsql是Python中操作MySQL的模組,其使用方法和MySQLdb幾乎相同。 1. 下載安裝 #在終端直接執行 pip3 install p

Python中使用SQLAlchemy連線Mysql資料庫(單表操作

一,SQLAlchemy的安裝 使用 $ easy_install sqlalchemy 或 $ pip install sqlalchemy 如果出現什麼錯,就進去root使用者下進行安裝試試,或者網上查查 >>>

【php】php操作MySQL數據庫

style 錯誤信息 庫服務器 例如 sql conn 指定 spa 布爾 一、操作步驟: 1. 連接MySQL數據庫並判斷是否連接成功2. 選擇數據庫3. 設置字符集4. 準備SQL語句5. 向MySQL服務發送SQL語句6. 解析處理結果集7. 釋放結果集,關閉數據庫連

PHP 操作MySQL

foreach cnblogs 增強 cep exc 操作 ... mysql用戶 服務器連接失敗 php中操作mysql數據庫的函數 php最初提供一套連接操作mysql函數 mysql_xxx(); 後來提供了增強版函數 mysql

spring中操作mysql數據庫

lose jar sna mark 操作mysql red 分享 wordpress rac 就是在spring中,對mysql數據庫進行增刪改查的樣例,很easy。 文件結構 maven的pom.xml文件,裏面用到的幾個很重要的jar包都有 <pro

Python操作MySQL

port sdf cnblogs ctc hal tro 多行 執行sql lai 本篇對於Python操作MySQL主要使用兩種方式: 原生模塊 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模塊,其使用方法和

python3操作MySQL數據庫

更新數據 lin 用戶 head 比較 for man final bject 這是python3下的MySQL基本操作。其他類型的數據庫用法基本一樣。就是庫的名字不同。因為python官方很早之前就規定了數據庫第三方庫的借口,來避免API混亂的情況。 安裝與準備 這

python操作MySQL--實例

out bject 中文字符 stdout copy sys where init date 有一段時間,沒更新,但這都不是自己懶惰的借口,希望自己能堅持下去; python可以操作MySQL 數據庫,需要安裝的是MySQL-python,並且實現讀入excel表及生

在Node.js使用Promise的方式操作Mysql

lds 回調 mysql連接 contact 只需要 rom undefine easyn resolve 最近在學習Node.js,雖然早就聽說了回調地獄結果過了一周就遇到了。所以花時間學習了了一下Promise。雖然還有Async/await、co、生成器等選擇,但是因

Linux 操作MySQL常用命令行

數據 logs 相關 entry 註意 新增 otto delet 記錄 Linux 操作MySQL常用命令行註意:MySQL中每個命令後都要以分號;結尾。  1、顯示數據庫  mysql> show databases;  +----------+  | Datab

Async.js解決Node.js操作MySQL的回調大坑

tty 類型 發生 獲取 rollback github data- map dsm 因為JavaScript語言異步特性。在使用Node.js運行非常多操作時都會使用到回調函數,當中就包含訪問數據庫。假設代碼中的業務邏輯略微復雜一點,回調一層層嵌套。那

PHP操作MySQL

php mysql一.PHP連接到MySQL 這裏,我們全面采用UTF-8編碼。設置Zend Stduio的編碼:Window -> Preferences -> Workspace 標頭設置,讓火狐和IE保持編碼統一:<?phpheader(‘Content-Type:text/html;

6.PHP操作MySQL的步驟

nag 代碼 clu con sset select ext lec url 第一步:PHP連接MySQL服務器 第三步:設置MySQL請求或返回數據的字符集 第四步:執行各種SQL語句 l 查詢SQL語句:mysql_query(“SELECT * FROM 00