1. 程式人生 > >Python連線mysql[ORM之sqlalchemy]

Python連線mysql[ORM之sqlalchemy]

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String, DateTime,Boolean,desc,asc
from sqlalchemy.orm import sessionmaker
import datetime
# create_engine()返回一個Engine的例項
engine = create_engine("mysql+pymysql://root:
[email protected]
:3306/news?charset=utf8"
, encoding='utf8') # 通過declarative_base()功能建立一個基類 Base = declarative_base() # 建立會話,繫結例項 Session = sessionmaker(bind=engine) class News(Base): '''構造一個類,對映表news''' __tablename__ = 'news' id = Column(Integer, primary_key=True
,autoincrement=True) title = Column(String(200), nullable=False) content = Column(String(2000), nullable=False) created_at = Column(DateTime,nullable=True) types = Column(String(10), nullable=False) image = Column(String(300), nullable=False) author = Column(String(20), nullable=True
) view_count = Column(Integer,default=0) is_valid = Column(Boolean,default=1) class OrmTest(object): '''呼叫類之前,建立會話''' def __init__(self): self.session = Session() # 新增一條資料 def add_one(self): '''新增一條或多條資料''' new_obj = News( title = '標題', content = '內容', types = '百家', created_at = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') ) new_obj2 = News( title='標題1', content='內容1', types='百家1', created_at=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') ) # 新增一條資料 self.session.add(new_obj) # 新增多條資料,使用[] self.session.add_all([new_obj,new_obj2]) #新增後,提交,或者回滾.rollback() self.session.commit() return new_obj # 查詢一條資料,返回一個object def get_one(self): '''查詢一條或多條資料,返回''' return self.session.query(News).get(2) # 查詢多條資料,filter,返回一個object list def get_more(self): return self.session.query(News).filter( News.is_valid==True,News.types=='百家',News.author.is_(None) ).order_by(desc(News.id)).all() # 查詢多條資料,filter_by def get_more2(self): return self.session.query(News).filter_by( is_valid=True,types='百家' ).order_by(desc(News.id)).all() # 修改一條資料 def update_date(self, pk): '''修改一條資料''' obj_list = self.session.query(News).filter(News.id == pk) if obj_list: for obj in obj_list: obj.is_valid = 1 self.session.add(obj) self.session.commit() return True return False # 修改多條資料 def update_more_date(self,pk): '''修改多條資料''' data_list = self.session.query(News).filter(News.types==pk) if data_list: for item in data_list: item.is_valid = 1 self.session.add(item) self.session.commit() return True return False # 刪除資料 def delete_date(self, pk): '''刪除資料''' data_list = self.session.query(News).filter(News.id < pk) n = 0 if data_list: for item in data_list: self.session.delete(item) n +=1 self.session.commit() return '刪除%s條資料' % n return '條件沒有資料要刪除' if __name__ == '__main__': obj = OrmTest() rest=obj.get_one() print(rest.title)

查詢:

查詢一條資料,可以使用get(id),
查詢多條資料,filter或者filter_by, 不同的是寫法問題,結果是一樣,

相關推薦

Python連線mysql[ORMsqlalchemy]

#!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarati

西遊路——python全棧——ORMSQLAlchemy(1)

目錄   定義一個類,ORM(物件關係對映)將這個類轉換為sql語句,使用pymysql進行執行 一,底層處理 使用engine/connectionpooling/dialect進行資料庫操作,engine使用connectionpooling連線資料庫,然後在通過d

西遊路——python全棧——ORMSQLAlchemy(3)外來鍵與relationship的關係

  目錄   relationship是為了簡化聯合查詢join等,建立的兩個表之間的虛擬關係,這種關係與標的結構時無關的。他與外來鍵十分相似,確實,他必須在外來鍵的基礎上才允許使用 不然會

Python道--Python連線MYSQL資料庫和傳送郵件

主機環境:Linux yan-Server 3.4.36-gentoo #3 SMP Mon Apr 1 14:09:12 CST 2013 x86_64 AMD Athlon(tm) X4 750K Quad Core Processor AuthenticAMD GNU

python-連線MySQLmysql.connector與MySQLdb區別)

  1.安裝mysql-connector 命令    pip install mysql-connector  import mysql.connector cnx = mysql.connector.connect(user='roo

【TCL】使用TCL連線Mysql資料庫編譯mysqltcl(TCL安裝在CentOS 7中)

最近在用tcl,想著連線mysql,從網上查了一下發現用mysqltcl比較好,不過需要自己編譯,使用過程遇上一些問題,因此就總結了一下。首先是先編譯mysqltcl。說明一下,我的tcl是通過yum install tcl命令直接安裝的,因此不同安裝方式tcl路徑可能有變化,例如如果是通過rpm安

Python連線MySQL獲取當前連結的processlist id

文章目錄 Python連線MySQL獲取當前連結的processlist id 一、解決方法 二、驗證 Python連線MySQL獲取當前連結的processlist id 在使用MySQL client API

Python連線MySQL資料庫執行sql語句時的引數問題

由於工作需要,今天寫了一個Python小指令碼,其中需要連線MySQL資料庫,在執行sql命令時需要傳遞引數,結果出問題了。在網上查了一下,發現有以下幾種方式傳遞引數: 一.直接把sql查詢語句完整寫入字串 try: connection = MySQLdb.connect(user

使用python連線MySQL資料庫

因為在你在python連線MySQL資料庫的時候,不能直接進行訪問,所以,你需要先下載pymysql模組: pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple 這裡可以使用pip install pymys

python連線MySQL資料庫問題

Python 資料庫圖解流程     Connection、Cursor比喻     Connection()的引數列表 host,連線的資料庫伺服器主機名,預設為本地主機(localhost)。user,連線資料庫的使用者名稱,預設為當前使用者。pass

python連線mysql出錯,_mysql_exceptions.OperationalError: (1045.......)

python連線mysql出錯,_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)") 是由於配置資料庫時候,資料庫名稱和使用者名

mac解決python連線MySQL,import MySQLdb後,出現no suitable image... but wrong architecture

在mac下使用MySQLdb模組,import時遇到以下錯誤: ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): no suitable image found. Did find: /Library

Python 連線 MySQL 的幾種姿勢

儘管很多 NoSQL 資料庫近幾年大放異彩,但是像 MySQL 這樣的關係型資料庫依然是網際網路的主流資料庫之一,每個學 Python 的都有必要學好一門資料庫,不管你是做資料分析,還是網路爬蟲,Web 開發、亦或是機器學習,你都離不開要和資料庫打交道,而 MySQL 又是最流行的一種資料庫

python連線MySQL資料庫並讀取資料

# 匯入模組 import pymysql # 1.連線到mysql資料庫 conn = pymysql.connect(host='localhost', user='root', password='1234', db='mycommodity', cha

python連線mysql出現的一些問題

Pycharm中的SQL語句顯示有錯:設定一下"File | Settings | Languages & Frameworks | SQL Dialects"中的資料庫環境,我這裡是Mysql,設定成它就ok 連線語句報錯:具體報錯資訊已不可究,大概就是mysql資料庫版本

Python 連線 MySQL 的幾種方式

儘管很多 NoSQL 資料庫近幾年大放異彩,但是像 MySQL 這樣的關係型資料庫依然是網際網路的主流資料庫之一,每個學 Python 的都有必要學好一門資料庫,不管你是做資料分析,還是網路爬蟲,Web 開發、亦或是機器學習,你都離不開要和資料庫打交道,而 MySQL 又是最

python 連線mysql資料庫

1、安裝依賴包 yum install gcc python-devel mysql-devel zlib-devel openssl-devel 2、下載安裝 https://pypi.org/pro

Python連線MySQL資料庫

本文使用Python3.7和MySQL8.0.11作為從測試: 1、PyMySQL安裝方法: $ pip3 install PyMySQL 2、資料庫連線 首先確認: 您已經建立了資料庫 SYS. 在SYS資料庫中您已經建立了表 EMPLOYEE EMPLOYE

python使用mysql-connector-python連線mysql時報錯No module named 'mysql.connector'; 'mysql' is not a package

情況是這樣的: 我在專案A下建立了一個python檔案,編寫程式碼 import mysql.connector mydb = mysql.connector.connect( host="hostname", # 資料庫主機地址 port='port', u

ORMSQLAlchemy

pan 查詢 fff sel 王者榮耀 local sql 條件 group by SQLAlchemy,ORM框架 類 --> 表 對象 --> 一行數據 類的字段 --> 數據庫表的一列 作用:幫助我們使用類和對象快速實現數據庫操作 單表操