1. 程式人生 > >python api連結資料庫

python api連結資料庫

零、開發環境

  • 作業系統:Ubuntu 16.04 及以上 或 Windows 8 及以上
  • Python版本:3.5及以上
  • 開發工具:PyCharm
  • 資料庫:MySQL

一、環境配置

  1. 建立虛擬環境
  2. 通過命令列進入虛擬環境,輸入命令在虛擬環境中安裝MySQL Client:

    pip install mysqlclient

二、簡單講解

在這篇文章中我會利用 mysqlclinet 這個庫,對資料庫進行簡單的操作。操作資料庫之前,需要先連線到資料庫(預設資料庫已建立),只需要呼叫 MySQLdb.connect 傳遞資料庫地址、埠號、使用者名稱、密碼和要操作的資料庫名稱,這樣就建立了對資料的連結,程式碼如下:

conn=MySQLdb.connect(
                host='192.168.0.102',#資料庫地址
                port=3306,#埠號
                user='root',#資料庫使用者名稱
                passwd='123*asd',#密碼
                db='news',#操作的資料庫
                charset='utf8' #資料庫編碼規則
            )

獲取到資料庫連結就可以對資料庫進行增刪改查的操作了,進行資料庫操作首先要獲取遊標,通過 conn.cursor()

獲得,程式碼如下:

cursor = conn.cursor()

在獲得到遊標後,就可呼叫 execute 來操作資料庫。這裡需要注意,對資料庫進行增、刪、改的時候餘姚在呼叫 execute 方法後,再呼叫commit方法,將記憶體中的資料寫入資料庫。完整程式碼見三

三、示例程式碼

import MySQLdb


class MysqlSearch(object):
    def __init__(self):
        self.get_conn()

    def get_conn(self):
        try:
            self.con = MySQLdb.connect(
                host='192.168.0.102'
, port=3306, user='root', passwd='123*asd', db='news', charset='utf8' ) except MySQLdb.Error as e: print('Error %d:%s' % (e.args[0], e.args[1])) def close_conn(self): try: if self.con: self.con.close() except MySQLdb.Error as e: print('Error: %s' % e) def get_one(self): # 準備SQL sql = 'select * from news where news_type = %s order by created_at desc; ' # 找到cursor cursor = self.con.cursor() # 執行SQL cursor.execute(sql, ('百家',)) # 拿到結果 rest = dict(zip([k[0] for k in cursor.description], cursor.fetchone())) # 處理資料 print(rest['title']) # 關閉cursor/連結 cursor.close() self.close_conn() def add_one(self): try: # 準備SQL sql = "INSERT INTO news (title,img_url,content,news_type) VALUE " \ "(%s,%s,%s,%s);" # 獲取連結和cursor cursor = self.con.cursor() # 提交資料到資料庫 cursor.execute(sql, ('標題1', '/static/img/news/01.png', '新聞內容1', '推薦',)) # 提交事務 self.con.commit() except: self.con.rollback() # 關閉cursor和連線 cursor.close() self.close_conn() def main(): obj = MysqlSearch() obj.add_one() if __name__ == '__main__': main()