一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python數(shù)據(jù)庫訪問 | 賴明星

 lycbje 2014-03-25

本文介紹python操作數(shù)據(jù)庫的方法,并以mysql與sqlite數(shù)據(jù)庫為例,從一個csv文件中讀入數(shù)據(jù),插入到數(shù)據(jù)庫中,再將數(shù)據(jù)庫中的數(shù)據(jù)讀出,保存到另一個csv文件。

介紹

python 社區(qū)制定了操作數(shù)據(jù)庫的標準,所以,我們可以通過統(tǒng)一的接口訪問不同的數(shù)據(jù)庫,減少了我們的學(xué)習(xí)負擔(dān)。

標準主要定義了兩個對象,一個用于管理連接的Connection對象,另一個是用于執(zhí)行查詢的Cursor 對象。

Python 操作數(shù)據(jù)庫的步驟

python 操作數(shù)據(jù)庫的思路如下:

  1. 導(dǎo)入相應(yīng)的數(shù)據(jù)庫模塊(import sqlite3, MySQLdb)
  2. 連接數(shù)據(jù)庫(connect),返回一個Connection 對象
  3. 通過該對象的cursor()成員函數(shù)返回一個Cursor 對象
  4. 通過Cursor對象的execute()方法執(zhí)行SQL語句
  5. 如果執(zhí)行的是查詢語句,則通過Cursor 對象的fetchone()等語句獲取返回結(jié)果
  6. 關(guān)閉Cursor對象(close())
  7. 關(guān)閉Connection對象(close())

插入數(shù)據(jù)

對于sqlite 數(shù)據(jù)庫,python 自帶了sqlite3 模塊,直接導(dǎo)入即可,對于mysql 數(shù)據(jù)庫,則需要安裝第三方模塊Mysql-python 。安裝完以后,在程序中導(dǎo)入模塊即可。

#!/usr/bin/python
#-*- coding: UTF-8 -*-

import csv

def main():
    DATABASE="sqlite3"

    #open databases
    if  DATABASE == "sqlite3":
        import sqlite3 as db
        conn = db.connect("test")
        strInsert = "insert into stocks values(?, ?, ?)"
    else:
        import MySQLdb as db
        #conn = db.connect(host="localhost", user="root", passwd="passwd", db="test")
        conn = db.connect(host="localhost", db="test", read_default_file="~/.my.cnf")
        strInsert = "insert into stocks values(%s, %s, %s)"

    #get cursor object
    cur = conn.cursor()

    #read CSV file
    f = open("stock_data")
    stocks = []
    for r in csv.reader(f):
        stocks.append(r)

    #create databses
    cur.execute("create table stocks( symbol text, shares integer, price real)")
    conn.commit()

    #execute statements of insert
    cur.executemany(strInsert, stocks)
    conn.commit()

    #close connection
    cur.close()
    conn.close()


if __name__ == '__main__':
    main()

mysql數(shù)據(jù)庫有兩種連接方式(可能有很多種),一種是通過指定用戶名和密碼的方式,還有一種是指定read_default_file 參數(shù),關(guān)于.my.cnf文件,可以參考這里。

讀取數(shù)據(jù)

下面執(zhí)行查詢語句,并將結(jié)果輸出到一個CSV文件。

#!/usr/bin/python
#-*- coding: UTF-8 -*-
import csv

def main():
    DATABASE="mysql"

    #open databases
    if  DATABASE == "sqlite3":
        import sqlite3 as db
        conn = db.connect("test")
    else:
        import MySQLdb as db
        #conn = db.connect(host="localhost", user="root", passwd="passwd", db="test")
        conn = db.connect(host="localhost", db="stocks", read_default_file="~/.my.cnf")

    #crate cursor object
    cur = conn.cursor()

    f = open("output", 'w')
    w = csv.writer(f)

    #read data
    cur.execute("select * from stocks")

    #write data to csv file
    while True:
        row = cur.fetchone()
        if  not row: break
        w.writerow(row)

    f.close()
    cur.close()
    conn.close()


if __name__ == '__main__':
    main()

ubuntu安裝MySQL-Python出現(xiàn)mysql_config not found錯誤

在ubuntu 下安裝Mysql-Python時,可能出現(xiàn)"mysql_config not found"錯誤。提示:

EnvironmentError: mysql_config not found

Google后得知mysql_config是屬于MySQL開發(fā)用的文件,而使用apt-get安裝的MySQL是沒有這個文件的,于是在包安裝器里面尋找

sudo apt-get install libmysqld-dev
sudo apt-get install libmysqlclient-dev

這兩個包安裝后問題即可解決。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    人妻少妇系列中文字幕| 亚洲国产婷婷六月丁香| 亚洲熟女乱色一区二区三区| 亚洲一区二区三区熟女少妇| 麻豆剧果冻传媒一二三区| 精品国产av一区二区三区不卡蜜 | 五月婷婷综合缴情六月| 欧美黑人在线一区二区| 开心五月激情综合婷婷色| 欧美视频在线观看一区| 精品国产亚洲av久一区二区三区| 欧美一级内射一色桃子| 成人免费观看视频免费| 激情少妇一区二区三区| 国产水滴盗摄一区二区| 国产精品一区二区三区日韩av| 九九热精品视频免费观看| 日韩精品一区二区亚洲| 99久久精品视频一区二区| 91国内视频一区二区三区| 少妇特黄av一区二区三区| 五月天婷亚洲天婷综合网| 日韩1区二区三区麻豆| 国产亚洲不卡一区二区| 欧美中文字幕一区在线| 国产亚洲精品一二三区| 国产传媒高清视频在线| 这里只有九九热精品视频| 熟女中文字幕一区二区三区| 六月丁香六月综合缴情| 日韩一区二区三区免费av| 亚洲av成人一区二区三区在线| 91香蕉国产观看免费人人| 中文字幕佐山爱一区二区免费| 千仞雪下面好爽好紧好湿全文| 国产日韩综合一区在线观看| 久久永久免费一区二区| 欧美激情一区二区亚洲专区| 日韩欧美黄色一级视频| 亚洲精品一区二区三区日韩| 青青久久亚洲婷婷中文网 |