溫馨提示×

溫馨提示×

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

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

Python中如何實現(xiàn)數(shù)據(jù)庫操作

發(fā)布時間:2021-10-28 11:05:58 來源:億速云 閱讀:130 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Python中如何實現(xiàn)數(shù)據(jù)庫操作”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Python中如何實現(xiàn)數(shù)據(jù)庫操作”這篇文章吧。

一、Mysql數(shù)據(jù)庫:

安裝pymysql:

pip install pymysql

1、數(shù)據(jù)庫連接對象 connect 的常用方法:

cursor() # 創(chuàng)建一個游標對象

commit() # 提交事務(wù)

rollback() # 事務(wù)回滾

close() # 關(guān)閉數(shù)據(jù)庫連接

2、游標對象 cursor 的常用方法:

execute() # 執(zhí)行SQL語句

executemany() # 用來執(zhí)行多天SQL語句

close() # 用來關(guān)閉游標

fetchone() # 用來從結(jié)果取出一條記錄,并將游標指向下一條記錄

fetchall() # 從結(jié)果中取出所有記錄

scroll() # 用于游標滾動

from myconn import myconn

class Sql:

def __init__(self,db=None):

# 初始化連接數(shù)據(jù)庫

# self.conn = pymysql.connect(db=dataName, user="user", passwd="passwd", host="host",charset='utf8')

# 這是我自己寫的方法,平常的話,安裝pymysql,用上面一句連接就可

self.conn = myconn.get_conn(db) if db!=None else myconn.get_conn()

def get_databases(self):

''' 獲取所有數(shù)據(jù)庫名 '''

return self.getSqlData("show databases")

def get_tables(self):

''' 獲取所有表名 '''

return self.getSqlData("show tables")

def create_table(self,table):

''' 創(chuàng)建表 '''

cur = self.conn.cursor()

# id:無符號整數(shù),主鍵,自增;name:字符串;age:無符號整數(shù)

sql = """create table {} (id int unsigned primary key auto_increment name varchar(10),age int unsigned)""".format(table)

cur.execute(sql)

self.conn.commit()

def

insert_data(self,table):

''' 增加一條數(shù)據(jù)到數(shù)據(jù)表 '''

cur = self.conn.cursor()

sql = "insert into {}(name,age) values(%s,%s)"

cur.execute(sql,('myName',80))

self.conn.commit()

def update_data(self,table):

''' 修改表中的數(shù)據(jù) '''

cur = self.conn.cursor()

sql = "update {} set age=18 where name='myName'".format(table)

cur.execute(sql)

self.conn.commit()

def select_data(self, table):

''' 從數(shù)據(jù)庫表查詢數(shù)據(jù) '''

cur = self.conn.cursor()

sql = "select name,age from {}".format(table)

cur.execute(sql)

return cur.fetchall()

def delete_data(self, table):

''' 從數(shù)據(jù)庫表刪除數(shù)據(jù) '''

cur = self.conn.cursor()

sql = "delete from {} where name='myName'".format(table)

cur.execute(sql)

self.conn.commit()

def get_fields(self,table):

''' 獲取指定表的字段 '''

cur = self.conn.cursor()

sql = "SELECT * FROM {} LIMIT 1".format(table)

cur.execute(sql)

v = cur.description

zds = [i[0] for i in v]

self.conn.commit()

return zds

def unique(self,table,*fields):

''' 唯一設(shè)置

table:表名,fields:字段名列表; '''

cur = self.conn.cursor()

if len(fields) == 1:

sql = "ALTER TABLE {} ADD unique(".format(table)

else:

sql = "ALTER TABLE {} ADD UNIQUE KEY(".format(table)

for i in fields:

sql += i

if i != fields[-1]:

sql += ','

else:

sql += ')'

try:

cur.execute(sql)

except Exception as exc:

print(exc)

else:

self.conn.commit()

def closeSql(self):

''' 關(guān)閉數(shù)據(jù)庫連接 '''

self.conn.close()

二、MongoDB數(shù)據(jù)庫

1,安裝 mongodb:

到MongoDB官網(wǎng)下載對應(yīng)版本的安裝包: https://www.mongodb.com/download-center?jmp=nav#community

1,把MongoDB安裝到C盤或者D盤都可以

2,在C盤建立data\db文件夾作為數(shù)據(jù)文件的存儲路徑,建立data\log文件夾存儲日志文件。

3,安裝服務(wù):cmd 進入到MongoDB的bin目錄,執(zhí)行:mongod --dbpath "C:\data\db" ?--logpath "C:\data\log\log.txt" ?--install -serviceName "MongoDB"

4,開啟服務(wù):net start MongoDB

注:有時由于沒有正常關(guān)閉MongoDB,導(dǎo)致開啟服務(wù)失敗,可嘗試刪除C:\data\db下的mongod.lock再開啟服務(wù)

mongod --dbpath "C:\data\db" ?--logpath "C:\data\log\log.txt" ?--install -serviceName "MongoDB" 

2,安裝 pymongo:

pip install pymongo

import pymongo

import datetime

class Mongodb:

""" Python MangoDB 的簡單操作 """

def __init__(self):

# 1、建立連接

# client = pymongo.MongoClient('localhost',27017) # 第一種方法

client = pymongo.MongoClient('mongodb://localhost:27017') # 第二種方法

# 2、獲取數(shù)據(jù)庫

# db = client.db_name # 第一種方法

db = client['db_name'] # 第二種方法

# 3、獲取一個集合

# self.collection = db.table # 第一種方法

self.collection = db['table'] # 第二種方法

def insert_data(self):

''' 插入文檔 '''

# name:姓名;age:年齡;datetime:存儲時間

user = {

"name":"myName",

"age":18,

"datetime":datetime.datetime.utcnow()

}

# 插入后,如果文檔內(nèi)沒有_id這個鍵值,則系統(tǒng)會自動添加_id;其中user可以是多個user組成的列表

user_id = self.collection.insert(user)

return user_id

def find_one_data(self):

''' 查詢一條文檔 '''

data = self.collection.find_one({"name":"myName"}) # 查詢name為myName的

return data

def find_data(self):

''' 查詢多個文檔 '''

# data = [d for d in self.collection.find()] # 查詢所有

data = [d for d in self.collection.find({"name":"myName"})] # 查詢所有指定name的文檔

return data

def find_limit_data(self):

''' 根據(jù)條件查詢數(shù)據(jù):

MongoDB中條件操作符有:

(>) 大于 - $gt

(<) 小于 - $lt

(>=) 大于等于 - $gte

(<= ) 小于等于 - $lte '''

data = self.collection.find({"age":{"$gt": 12}}) # 查詢年齡大于12歲的

return data

def get_size(self):

''' 查詢符合條件的文檔條數(shù) '''

size = self.collection.find({"name":"myName"}).count()

return size

def get_names(self):

''' 查詢所有 name 的值,不重復(fù)的。返回list '''

names = self.collection.distinct('name')

return names

def update_data(self):

''' 修改文檔 '''

self.collection.update({"name":"myName"},{"$set":{"age":28}}) # 修改name為myName的年齡

def delete_data(self):

''' 刪除文檔 '''

self.collection.remove({"name":"myName"}) # 刪除name為myName的文檔

以上是“Python中如何實現(xiàn)數(shù)據(jù)庫操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

AI