中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sqlalchemy怎么在python中使用

發布時間:2021-03-31 17:18:48 來源:億速云 閱讀:179 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關sqlalchemy怎么在python中使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一.ORM簡介

1. ORM(Object-Relational Mapping,對象關系映射):作用是在關系型數據庫和業務實體對象之間做一個映射.

2. ORM優點:

向開發者屏蔽了數據庫的細節,使開發者無需與SQL語句打交道,提高了開發效率;

便于數據庫的遷移,由于每種數據庫的SQL語法有差別,基于Sql的數據訪問層在更換數據庫時通過需要花費時間調試SQL時間,而ORM提供了獨立于SQL的接口,ORM的引擎會處理不同數據庫之間的差異,所以遷移數據庫時無需更改代碼.

應用緩存優化等技術有時可以提高數據庫操作的效率.

3. SQLALchemy:是python中最成熟的ORM框架,資源和文檔很豐富,大多數python web框架對其有很好的主持,能夠勝任大多數應用場合,SQLALchemy被認為是python事實上的ORM標準.

二、代碼

1.建表

"""
Created on 19-10-22
@author: apple
@description:建表
"""
import pymysql
server = '127.0.0.1'
user = 'root'
# dev
password = '123456'
conn = pymysql.connect(server, user, password, database='DataSave') # 獲取連接
cursor = conn.cursor() # 獲取游標
# "**ENGINE=InnoDB DEFAULT CHARSET=utf8**"-創建表的過程中增加這條,中文就不是亂碼
# 創建表
cursor.execute ("""
CREATE TABLE if not exists lamp_result(
  result_id INT NOT NULL auto_increment primary key,
  product_number VARCHAR(100),
  record_time VARCHAR(100),
  lamp_color INT NOT NULL,
  detect_result VARCHAR(100),
  old_pic_path VARCHAR(100),
  result_pic_path VARCHAR(100)
  )
  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
""")
# 查詢數據
cursor.execute('SELECT * FROM lamp_result')
row = cursor.fetchone()
print(row)
# cursor.execute("INSERT INTO user VALUES('%d', '%s','%s','%s','%s')" % ('xiaoming','qwe','ming','@163.com'))
# 提交數據,才會寫入表格
conn.commit()
# 關閉游標關閉數據庫
cursor.close()
conn.close()

2. 數據存儲

"""
Created on 19-10-22
@author: apple
@requirement:Anaconda 4.3.0 (64-bit) Python3.6
@description:數據存儲
"""
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer, create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
# 連接數據庫
# alter table students convert to character set utf8;
conn = "mysql+pymysql://root:password@0.0.0.0:3306/DataSave"
engine = create_engine(conn, encoding='UTF8', echo=False) # echo=True 打印日志
# 創建session對象
Session = sessionmaker(bind=engine)
session = Session()
# 數據庫表模型ORM
class DataSaveSystem(Base):
  """
  員工自助信息采集系統
  """
  __tablename__ = 'lamp_result' # 定義表名
  # 定義列名
  result_id = Column(Integer, primary_key=True, autoincrement=True, nullable=False)
  product_number = Column(String(50), nullable=True)
  record_time = Column(String(50), nullable=False)
  lamp_color = Column(Integer, nullable=False)
  detect_result = Column(String(100), nullable=False)
  old_pic_path = Column(String(100), nullable=False)
  result_pic_path = Column(String(100), nullable=False)
  def __repr__(self):
    """
    引用該類別,輸出結果
    :return:
    """
    return str(self.__dict__)
    # return '<detect_result:{}>'.format(self.detect_result)
# 插入數據
def insert_to_db(product_number=None, record_time=None, lamp_color=None,
         detect_result=None, old_pic_path=None, result_pic_path=None):
  '''
  :param product_number: 產品編號
  :param record_time: 取原圖時間
  :param lamp_color: 燈的顏色:1 2 3 4
  :param detect_result: 檢測結果
  :param old_pic_path: 原圖路徑
  :param result_pic_path: 結果圖路徑
  :return: 數據是否寫入成功
  '''
  information_system_instance = DataSaveSystem(
    product_number=product_number,
    record_time=record_time,
    lamp_color=lamp_color,
    detect_result=detect_result,
    old_pic_path=old_pic_path,
    result_pic_path=result_pic_path)
  # session.add_all([
  #   lamp_result(id=2, name="張2", age=19),
  #   lamp_result(id=3, name="張3", age=20)
  # ])
  session.add(information_system_instance)
  try:
    session.commit() # 嘗試提交數據庫事務
    # print('數據庫數據提交成功')
    return {
      "code": 200,
      "status": True,
      "message": "寫入數據庫成功",
    }
  except SQLAlchemyError as e:
    session.rollback()
    print(e)
    return {
      "code": 500,
      "status": False,
      "message": str(e)
    }
# url = "mysql+pymysql://root:password@0.0.0.1:3306/DataSave"
# # echo為True時,打印sql,可用于調試
# engine = create_engine(url, echo=False, encoding='utf-8', pool_size=5)
# sessionClass = sessionmaker(bind=engine)
# # 創建會話
# session = sessionClass()
# # 查所有,并排序
# stuList = session.query(DataSaveSystem).order_by(DataSaveSystem.result_id).all()
# print(stuList)
#
stu = DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='d')
# session.add(stu)
stuList = [DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='d'),
      DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='d')]
# session.add_all(stuList)
# session.commit()
# print('數據成功')
if __name__ == '__main__':
  result = insert_to_db(stu)
  print(result)

3.數據函數調用

"""
Created on 19-10-31
@author: apple
@requirement:Anaconda 4.3.0 (64-bit) Python3.6
@description:調取函數基類
"""
from data_sql.airconditioning_lamp_datasave.datasave import DataSaveSystem
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer, create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
# 連接數據庫
# alter table students convert to character set utf8;
conn = "mysql+pymysql://root:password@0.0.0.1:3306/DataSave"
engine = create_engine(conn, encoding='UTF8', echo=False) # echo=True 打印日志
# 創建session對象
Session = sessionmaker(bind=engine)
session = Session()
stuList = [DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='F'),
      DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='F'),DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='F'),DataSaveSystem(product_number='id1',
    record_time='20191022170400',
    lamp_color='1',
    detect_result='ok',
    old_pic_path='picture/',
    result_pic_path='F')]
session.add_all(stuList)
session.commit()
print('數據成功')
# # 根據主建查詢數據
# result = session.query(DataSaveSystem).get(3)
# print(result.old_pic_path)
# # 查詢第一條
# result = session.query(DataSaveSystem).first()
# print(result) #打印對象屬性
# 查詢表關鍵字的數據
result = session.query(DataSaveSystem).filter_by(result_pic_path='a/').first()
print(result)
#修改
session.query(DataSaveSystem).filter(DataSaveSystem.result_pic_path=='a/').update({"detect_result":"不合格"})
session.commit()

上述就是小編為大家分享的sqlalchemy怎么在python中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

光泽县| 兴宁市| 林口县| 台山市| 湖南省| 丰台区| 保康县| 晋城| 沅陵县| 新干县| 洛川县| 柘城县| 库车县| 盱眙县| 同心县| 同江市| 武冈市| 陆川县| 赤城县| 奉贤区| 溆浦县| 利川市| 广东省| 弥勒县| 美姑县| 仁化县| 安仁县| 临沭县| 集贤县| 宽城| 东安县| 治县。| 铅山县| 侯马市| 科技| 繁峙县| 永福县| 广饶县| 湄潭县| 林甸县| 陵川县|