• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      Python編程:使用pythink查詢數據庫

       CharlseShan 2019-04-16

      github:https://github.com/mouday/PyThink

      說下這個pythink模塊的作用

      背景:
      我們公司的主要使用的后端語言有兩種,python和php

      而且有一個專門的DBA管理數據庫,就是說,這個數據庫不是你一個人的,有同組的成員和其他組的成員在使用,好像大部分公司都一樣。

      Python爬蟲部分的業務,主要操作是插入;而PHP業務主要是查詢

      最開始我使用普通的模塊pymysql,這樣每次都要去連接,關閉,很麻煩;

      import pymysql

      conn = pymysql.Connect(
      host='127.0.0.1',
      port=3306,
      user='root',
      passwd='123456',
      db='test'
      )

      cursor = conn.cursor()

      rows = cursor.execute('insert into student(name, age, register_date, gender) values ('xiaoming', 23, '2018-12-30', 'M')')
      cursor.close()
      conn.close()

      后來使用了peewee 來管理數據庫鏈接,使用Model來創建數據庫(這個時候還沒有人管理數據庫),簡直不要太爽,不寫一行SQL語句就實現了表創建,和數據操作;

      后來我這邊的表太多了,業務發展也規范了,專門有人管理數據庫。這樣就不能使用Model直接建表,而是要寫成sql語句給數據庫管理人員,審核完后再進行建表操作

      from peewee import *

      # 設置數據庫
      db = MySQLDatabase('mysql://root:123456@127.0.0.1:3306/demo')

      class BaseModel(Model):
      class Meta:
      database = db

      # 定義數據表
      class User(BaseModel):
      name = CharField()

      User.create(name='Tom')

      在這種情況下,如果使用Model就必須先寫sql建表,再把所有字段定義寫出來才可以使用,如果涉及的表字段少還好,有時候涉及100多個字段(真的有過),那光是定義就一上午,Model的優勢反而成了累贅,心累;

      于是我開始不用Model了,直接使用peewee 提供execute_sql 這樣我們又回到了原生sql的時代;

      db.execute_sql('insert into student(name, age) values ('Tom', 24)')

      一般情況下,會將sql執行的語句和結果封裝到一個函數中。寫的多了,發現很多重復代碼,除了sql不一樣以外,其他格式基本一致。于是需要抽象出來,將相同代碼抽象封裝,以便復用。

      于是pythink 出現了,結合了peewee 的操作方式,也保留了一部分原生sql 的格式,比如,增(insert)、刪(delete)、改(update)、查(select)基本保留了sql的關鍵字,不需要額外記憶和區別,而且可以把對表的操作單獨卸載model中,進行統一管理,也可以重寫基類的方法,自己實現自己的業務邏輯(不建議,建議取一個不一樣的函數名字)。

      一起感受下其如絲般順滑的操作

      安裝

      pip install pythink

      代碼示例

      mysql> use demo;
      mysql> select * from student limit 2;
      +----+------+------+------+
      | id | name | age | sex |
      +----+------+------+------+
      | 1 | Tom | 24 | 1 |
      | 2 | jack | 23 | 0 |
      +----+------+------+------+
      2 rows in set (0.00 sec)
      # -*- coding: utf-8 -*-

      from pythink import ThinkModel
      from playhouse.db_url import connect

      # 1、使用peewee進行數據庫連接
      db = connect('mysql://root:123456@127.0.0.1:3306/demo')

      # 2、繼承 ThinkModel 實現自己的類
      class StudentThinkModel(ThinkModel):
      table_name = 'student'
      database = db

      # 3、數據插入insert
      data = {
      'name': 'Tom',
      'age': 24
      }

      result = StudentThinkModel.insert(data)
      print(result)
      # 1

      # 4、刪除
      result = StudentThinkModel.delete(13)
      print(result)
      # 1

      # 5、修改
      data = {
      'name': 'Tom',
      'age': 24
      }
      result = StudentThinkModel.update(1, data)
      print(result)
      # 1

      # 6、查詢數據庫中 id=1 的 name 和 age 兩個字段
      students = StudentThinkModel.select(fields=['name', 'age'], where='id=1', limit=1)
      for student in students:
      print('name: {}'.format(student.name))
      print('age: {}'.format(student.age))

      '''
      name: Tom
      age: 24
      '''


      # 7、記得關閉數據庫連接
      db.close()

      當然還可以進行各種增刪改查,不過還處于測試階段,如果用于正式項目還要注意其執行的結果

      (完)

      看完本文有收獲?請轉發分享給更多人

      關注「Python那些事」,做全棧開發工程師

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 人人妻人人澡人人爽欧美二区| 亚洲成AV人无码综合在线 | 国产在线超清日本一本| 国产高潮刺激叫喊视频| 欧美丰满熟妇bbbbbb| 综合激情亚洲丁香社区| 人人妻人人狠人人爽| 久久精品国产再热青青青| 欧美激情一区二区久久久| 亚洲天堂精品一区二区| 无码AV无码天堂资源网影音先锋| 亚洲第一极品精品无码久久| 亚洲午夜理论无码电影| 国产激情艳情在线看视频| 国产美熟女乱又伦AV果冻传媒| 3D动漫精品啪啪一区二区免费| 国产富婆推油SPA高潮了| 欧美精品亚洲精品日韩专区一乛方 | 99久久免费精品国产72精品九九| 亚洲av成人在线一区| 国产成人久久精品一区二区三区| 亚洲AVAV天堂AV在线网阿V | 精品久久人人妻人人做精品| 国产精品日日摸夜夜添夜夜添2021 | 亚洲爆乳无码一区二区三区| 午夜不卡欧美AAAAAA在线观看| 天天在线看无码AV片| 国产又黄又爽又刺激的免费网址| 国产不卡一区不卡二区| 精精国产XXXX视频在线播放| 华人在线亚洲欧美精品| 国产丰满乱子伦无码专区| 老司机67194精品线观看| 成人看的污污超级黄网站免费| 中文AV无码人妻一区二区三区| 丰满爆乳在线播放| 国产成人午夜福利院| 久久精品国产亚洲av天海翼| 狠狠噜天天噜日日噜| 久久综合亚洲鲁鲁九月天| 国产成人啪精品午夜网站|