日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 内存数据库下载,Python 文件存储和数据库

發布時間:2023/12/4 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 内存数据库下载,Python 文件存储和数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python 中數據存儲的方式和其他語言沒什么區別,主要分為兩個方面:文件存儲和數據庫存儲。

文件存儲

文件存儲的方法也分為很多種,主要包括:Python 內置方法

NumPy 模塊方法

os 模塊方法

csv 模塊方法

Python 內置方法

在不需要借助任何外界庫的前提下,python 內置方法其實也可以完成我們需要的文件存取任務:

open() 方法file object = open(file_name [, access_mode][, buffering])

該方法意義在于按照指定模式打開文件,其中,各個參數的含義如下:file_name:file_name 變量是一個包含了你要訪問的文件名稱的字符串值。

access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等(可選,默認為只讀)。

buffering: 如果 buffering 的值被設為 0,就不會有寄存。如果 buffering 的值取 1,訪問文件時會寄存行。如果將 buffering 的值設為大于 1 的整數,表明了這就是的寄存區的緩沖大小。如果取負值,寄存區的緩沖大小則為系統默認。

簡單示例:

12345#!/usr/bin/python

# -*- coding: UTF-8 -*-

file = open('tttt.py')

print(file.read())

這是一個最簡單的讀取文件, 上面我們實際上使用的是一個相對路徑,當然我們也可以使用絕對路徑:

12345#!/usr/bin/python

# -*- coding: UTF-8 -*-

file = open('C:\\Users\\Administrator\\Desktop\\tttt.py')

print(file.read())

我們常用 / 來表示相對路徑,\ 來表示絕對路徑,上面的路徑里 \\ 是轉義的意思。

接下來我們再來看看第二個參數如何使用,第二個參數是文件的打開模式,可用的模式有如下幾個:字符意義r讀取(默認)

w寫入,并先截斷文件

x排它性創建,如果文件已經存在則失敗

a寫入,如果文件存在則在末尾追加

b二進制模式

t文本模式(默認)

+打開用于更新(讀取與寫入)

默認模式為 r (打開用于讀取文本,與 rt 同義)。 模式 w+ 與 w+b 將打開文件并清空內容。 模式 r+ 與 r+b 將打開文件并不清空內容。

值得注意的是,打開一個文件的方式有兩種,一種是字節流的方式,另一種則是已經編碼的字符方式,根據你的具體需要而定。

12345678910#!/usr/bin/python

# -*- coding: UTF-8 -*-

file = open('tttt.py', 'r+')

print(file.read())

file.write('dlc')

print(file.read())

file.close()

write() 方法可將任何字符串寫入一個打開的文件。該方法不會在字符串的結尾添加換行符 \n.

close() 方法刷新緩沖區里任何還沒寫入的信息,并關閉該文件。

除了這個內置函數外,Python 還有很多常用的內置函數:https://docs.python.org/zh-cn/3/library/functions.html#open

NumPy 模塊方法

NumPy 是使用 Python 進行科學計算的基礎軟件包。除其他外,它包括:功能強大的N維數組對象。

精密廣播功能函數。

集成 C/C+ 和 Fortran 代碼的工具。

強大的線性代數、傅立葉變換和隨機數功能。

我們今天只關心它的一個特別的功能就是 I/O 操作,NumPy 可以讀寫磁盤上的文本數據或二進制數據。它有兩個相關函數 load() 和 save().

123456789import numpy as np

a = np.array([1,2,3,4,5])

# 保存到 outfile.npy 文件上

np.save('outfile.npy',a)

# 保存到 outfile2.npy 文件上,如果文件路徑末尾沒有擴展名 .npy,該擴展名會被自動加上

np.save('outfile2',a)

NumPy還有兩個常用的字符讀寫方法 loadtxt() 和 savetxt():

12345678import numpy as np

a=np.arange(0,10,0.5).reshape(4,-1)

#改為保存為整數,以逗號分隔

np.savetxt("a.txt",a,fmt="%d",delimiter=",")

#load時也要指定為逗號分隔

b = np.loadtxt("a.txt",delimiter=",")

print('b=\n',b)

os 模塊方法

Python 的 os 模塊封裝了常見的文件和目錄操作,官方文檔:https://docs.python.org/3/library/os.path.html

常用的方法如下:方法說明os.mkdir創建目錄

os.rmdir刪除目錄

os.rename重命名

os.remove刪除文件

os.getcwd獲取當前工作路徑

os.walk遍歷目錄

os.path.join連接目錄與文件名

os.path.split分割文件名與目錄

os.path.abspath獲取絕對路徑

os.path.dirname獲取路徑

os.path.basename獲取文件名或文件夾名

os.path.splitext分離文件名與擴展名

os.path.isfile判斷給出的路徑是否是一個文件

os.path.isdir判斷給出的路徑是否是一個目錄

咱們著重看一下 os.write(fd, str) 方法和 os.read(fd,n):os.read(fd,n)

fd ? This is the file descriptor of the file(文件描述符).

n ? These are n bytes from file descriptor fd(讀幾個字節).

12345678910#!/usr/bin/python

# -*- coding: UTF-8 -*-

import os

file = os.open('tttt.py', os.O_RDWR | os.O_APPEND )

print(os.read(file, 10))

os.write(file, str.encode('dlc'))

print(os.read(file, 10))

os.close(file)

從這里我們其實可以看出,Python 內置的 read() 和 write() 方法更適合具體的文件讀寫,而 os 模塊 更適合文件和目錄的操作,各有側重。

csv 模塊方法

CSV 是逗號分割值的文件格式,其文件以純文本的形式存儲表格數據。 CSV 文件的每一行都用換行符分割,列與列之間用逗號分割,它可以用 Excel 打開。

例如我新建了一個 Excel 內容如下:

導出 csv 內容如下:

使用 csv 模塊讀出數據:

123456789#!/usr/bin/python

# -*- coding: UTF-8 -*-

import csv

with open('tttt.csv', 'r') as myFile:

lines = csv.reader(myFile)

for line in lines:

print(line)

這里使用到了 with 語句,詳細可參考:https://www.ibm.com/developerworks/cn/opensource/os-cn-pythonwith/index.html

數據庫存儲

Python 標準數據庫接口為 Python DB-API,Python DB-API 為開發人員提供了數據庫應用編程接口。Python 數據庫接口支持非常多的數據庫,你可以選擇適合你項目的數據庫:GadFly

mSQL

MySQL

PostgreSQL

Microsoft SQL Server 2000

Informix

Interbase

Oracle

Sybase

操作 MySQL

MySQLdb 是 python 操作 mysql 數據庫的一個庫。mysql 的幾乎所有的操作都可以實現。

安裝方法:

1pip install MySQL-python

mysqlclient 是 MySQLdb 的 fork 版,增加了對 python 3.x 的支持和其它優化,推薦替代 MySQLdb.

首先需要安裝 mysqlclient 庫,連接 Python 和 MySQL. 本文出自水寒的博客:https://dp2px.com

1pip install mysqlclient

安裝完成后我們可以嘗試使用 Python 操作 MySQL,首先我們通過 Navicat 創建一個數據庫:

官方文檔地址:https://mysqlclient.readthedocs.io/

創建一個表,插入一條數據:

1234567891011121314#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

conn = MySQLdb.connect(host='192.168.1.37', user='root', passwd='123456', db='lixiaoqiang')

cur = conn.cursor()

cur.execute("create table student(id int, name varchar(20), age varchar(10))")

cur.execute("insert into student values('1', 'XiaoMing', '18')")

cur.close()

conn.commit()

conn.close()

如果我們要更新這條數據,可以使用如下 SQL:

1delete from student where id = 1;

假如我們要修改則使用如下 SQL:

1update student set age = '19' where id = 1;

當然了,也可以使用占位符來插入數據:

123456789import MySQLdb

conn = MySQLdb.connect(host='192.168.1.37', user='root', passwd='123456', db='lixiaoqiang')

cur = conn.cursor()

sql = "insert into student values(%s,%s,%s)"

cur.execute(sql, (2, 'XiaoHong', '20'))

cur.close()

conn.commit()

conn.close()

你也可以使用占位符的方式一次插入多條數據,這個時候需要使用 executemany() 函數,例如:

123456789101112131415161718#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

conn = MySQLdb.connect(host='192.168.1.37', user='root', passwd='123456', db='lixiaoqiang')

cur = conn.cursor()

sql = "insert into student values(%s,%s,%s)"

cur.executemany(sql, [

(3, 'Tom', '21'),

(4, 'Jack', '23'),

(5, 'Heiwa', '24'),

(6, 'xiaoM', '26'),

(7, 'Yahei', '28'),

])

cur.close()

conn.commit()

conn.close()

接下來我們來看看如何查詢表中的數據,查詢數據需要使用 SQL 語句加 fetchone() 和 fetchmany() 函數:

123456789101112131415#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

conn = MySQLdb.connect(host='192.168.1.37', user='root', passwd='123456', db='lixiaoqiang')

cur = conn.cursor()

cur.execute("select * from student")

print(cur.fetchone())

print(cur.fetchone())

print(cur.fetchone())

print(cur.fetchone())

cur.close()

conn.commit()

conn.close()

fetchone() 方法可以幫助我們獲得表中的數據,可是每次執行 cur.fetchone() 獲得的數據都不一樣,換句話說我沒執行一次,游標會從表中的第一條數據移動到下一條數據的位置,所以,我再次執行的時候得到的是第二條數據。

scroll(0,'absolute') 方法可以將游標定位到表中的第一條數據。還是沒解決我們想要的結果,如何獲得表中的多條數據并打印出來呢?

1234567891011121314#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

conn = MySQLdb.connect(host='192.168.1.37', user='root', passwd='123456', db='lixiaoqiang')

cur = conn.cursor()

allexe = cur.execute("select * from student")

info = cur.fetchmany(allexe)

for item in info:

print(item)

cur.close()

conn.commit()

conn.close()

操作 MongoDB

很多時候我們爬取的數據都是 JSON 格式的,這個時候使用非關系型數據庫 MongeDB 就會方便很多,它是非常流行的 NoSQL 數據庫之一。

社區版是免費的,下載地址:https://www.mongodb.com/download-center

注冊后去郵箱驗證,然后登錄去下載,有兩個安裝包,一個是服務另一個是儀表盤。

先安裝好下面那個服務程序后會自動啟動 mongodb 服務,此時你可以選擇安裝圖形化儀表盤也可以不安裝,儀表盤如下:

創建一個 Database 和一個表 student 如下:

緊接著我們使用 pymongo 來查詢這條數據:

123456789101112#!/usr/bin/python

# -*- coding: UTF-8 -*-

from pymongo import MongoClient

client = MongoClient('localhost', 27017)

db = client.testpython

collection = db.student

result = collection.find_one({'gender': 'man'})

print(result)

然后我們插入一條數據,再查詢出所有數據:

123456789101112131415#!/usr/bin/python

# -*- coding: UTF-8 -*-

from pymongo import MongoClient

client = MongoClient('localhost', 27017)

db = client.testpython

collection = db.student

xiaogang = {"name": "xiaogang", "age": 20, "gender": "woman"}

collection.insert_one(xiaogang)

result = collection.find()

for item in result:

print(item)

還記得我們上一篇 《Python 的網絡請求 Requests 模塊使用》 的爬取豆瓣Top250 的案例嗎,我們接下來嘗試將爬取的數據存入 MongoDB 數據庫:

12345678910111213141516171819202122232425262728293031323334353637383940414243#!/usr/bin/python

# -*- coding: UTF-8 -*-

import requests

from bs4 import BeautifulSoup

from pymongo import MongoClient

headers = {

'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36

(KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',

'Host': 'movie.douban.com'

}

def getMovieData():

movies = []

for i in range(0, 10):

link = 'https://movie.douban.com/top250?start=' + str(i * 25) + '&filter='

r = requests.get(link, headers=headers, timeout=3)

print("響應狀態碼:", r.status_code)

soup = BeautifulSoup(r.text, "lxml")

div_list = soup.find_all('div', class_='item')

for each in div_list:

movieimg = each.find('div', class_='pic').a.img['src'].strip()

moviename = each.find('div', class_='hd').a.span.text.strip()

moviestar = each.find('span', class_='rating_num').text.strip()

movie = {'name': moviename, 'img': movieimg, 'star': moviestar}

movies.append(movie)

return movies

def insertDB(movies):

client = MongoClient('localhost', 27017)

db = client.testpython

collection = db.movie

collection.insert_many(movies)

movies = getMovieData()

print("爬取成功,開始寫入數據庫")

insertDB(movies)

print("寫入數據庫成功")

總結

以上是生活随笔為你收集整理的python 内存数据库下载,Python 文件存储和数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩一区二区区 | 天堂av中文在线 | 日本激情视频在线观看 | 中文幕无线码中文字蜜桃 | 都市激情男人天堂 | 色臀 | 午夜影院91 | 亚洲狼人色 | 国产精品99精品无码视亚 | 美景之屋电影免费高清完整韩剧 | 国产主播在线播放 | 国产精品人人做人人爽人人添 | 亚洲成人激情av | 亚洲第一av在线 | 久操影视| 一区二区视频免费在线观看 | 少妇裸体挤奶汁奶水视频 | 欧美一区二区三区成人久久片 | 国产美女精品在线 | 久久久久久亚洲av毛片大全 | 天天干狠狠操 | 精品视频久久久 | 91在线看视频 | 日韩网站免费观看高清 | 中文字幕免费在线看线人动作大片 | 天天爱天天舔 | 亚洲视频在线观看视频 | 日日干视频 | 伊人激情综合网 | 91精产品一区观看 | 国产在线资源 | 欧美视频 | 日韩无码精品一区二区三区 | www亚洲国产| 免费毛片一区二区三区 | 丰满肉嫩西川结衣av | jvid视频| 男人免费网站 | 天堂最新 | 中文一区二区在线观看 | 夜夜狠 | 青青草av | 国产日韩欧美视频 | 91黄色国产| 在线视频日韩欧美 | av毛片网站| 秋霞网一区二区三区 | 黑人干亚洲 | 亚洲国产中文字幕在线 | 免费黡色av | 日韩成人福利视频 | 日韩va在线 | 日韩av在线播放不卡 | 日韩一级网站 | 奇米影视在线观看 | 美女被到爽高潮视频 | 久草网站| 亚洲av无码电影在线播放 | 国精产品一区一区三区mba下载 | 岳狂躁岳丰满少妇大叫 | 国产亚洲精品久久久久久久 | 国产精品久久久一区二区三区 | 精品三级av | 一区二区成人免费视频 | 俺去俺来也在线www色官网 | 久久中文字幕电影 | 国产成人免费av一区二区午夜 | 四虎精品久久 | 国产精品久久久久国产a级 国产一区二区在线播放 | 欧美日本韩国一区 | 日韩免费中文字幕 | √天堂8资源中文在线 | 国产成人午夜高潮毛片 | 麻豆国产视频 | 亚洲精品国产精品乱码不66 | 69视频网站 | 亚洲国产影视 | 中文字幕亚洲专区 | 五月天丁香网 | 亚洲 欧美 综合 | 福利91| 国产成人麻豆免费观看 | 最新免费av网站 | 三级欧美韩日大片在线看 | 亚洲一区二区av在线 | 色涩久久| 侵犯女教师一区二区三区 | 九九热视频免费观看 | 欧美视频一区二区在线 | 狠狠干2020| 在线观看wwww | 国产欧美在线观看视频 | 都市激情久久 | 妹子干综合| 1级性生活片 | 亚洲中午字幕 | 欧美aaa大片| 秋霞毛片少妇激情免费 | 亚洲精品一区中文字幕乱码 |