mysqldb方式操作數據庫(jdbc操作mysql數據庫)

本文目錄一覽:

Python 操作 MySQL 的5種方式

1、MySQLdb

# 前置條件

sudo apt-get install python-dev libmysqlclient-dev # Ubuntu

sudo yum install python-devel mysql-devel # Red Hat / CentOS

# 安裝

pip install MySQL-python

Windows 直接通過下載 exe 文件安裝

#!/usr/bin/python

import MySQLdb

db = MySQLdb.connect(

host = “localhost”, # 主機名

user = “root”, # 用戶名

passwd = “pythontab.com”, # 密碼

db = “testdb”) # 數據庫名稱

# 查詢前,必須先獲取游標

cur = db.cursor()

# 執行的都是原生SQL語句

cur.execute(“SELECT * FROM mytable”)

for row in cur.fetchall():

print(row[0])

db.close()

2、mysqlclient

# Windows安裝

pip install some-package.whl

# linux 前置條件

sudo apt-get install python3-dev # debian / Ubuntu

sudo yum install python3-devel # Red Hat / CentOS

brew install mysql-connector-c # macOS (Homebrew)

pip install mysqlclient

3、PyMySQL

pip install PyMySQL

# 為了兼容mysqldb,只需要加入

pymysql.install_as_MySQLdb()

import pymysql

conn = pymysql.connect(host = ‘127.0.0.1’, user = ‘root’, passwd = “pythontab.com”, db = ‘testdb’)

cur = conn.cursor()

cur.execute(“SELECT Host,User FROM user”)

for r in cur:

print(r)

cur.close()

conn.close()

4、peewee

pip install peewee

import peewee

from peewee import *

db = MySQLDatabase(‘testdb’, user = ‘root’, passwd = ‘pythontab.com’)

class Book(peewee.Model):

author = peewee.CharField()

title = peewee.TextField()

class Meta:

database = db

Book.create_table()

book = Book(author = “pythontab”, title = ‘pythontab is good website’)

book.save()

for book in Book.filter(author = “pythontab”):

print(book.title)

5、SQLAlchemy

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from sqlalchemy_declarative import Address, Base, Person

class Address(Base):

__tablename__ = ‘address’

id = Column(Integer, primary_key = True)

street_name = Column(String(250))

engine = create_engine(‘sqlite:///sqlalchemy_example.db’)

Base.metadata.bind = engine

DBSession = sessionmaker(bind = engine)

session = DBSession()

# Insert a Person in the person table

new_person = Person(name = ‘new person’)

session.add(new_person)

session.commit()

如何使用python連接mysql數據庫

在 Python 語言環境下我們這樣連接數據庫。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host=”172.16.192.100″,port=3306,user=”appuser”,password=”xxxxxx”)

但是連接數據庫的背後發生了什麼呢?

答案

當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由 MySQL 協議 規定。MySQL 協議:整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。

MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。

2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。

3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。

4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。

怎麼用python連接mysql數據庫

在 Python 語言環境下我們這樣連接數據庫。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host=”172.16.192.100″,port=3306,user=”appuser”,password=”xxxxxx”)

但是連接數據庫的背後發生了什麼呢?

答案

當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由 MySQL 協議 規定。MySQL 協議:整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。

MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。

2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。

3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。

4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。

請教個 python mysqldb commit的問題

任何應用都離不開數據,所以在學習python的時候,當然也要學習一個如何用python操作數據庫了。MySQLdb就是python對mysql數據庫操作的模塊。官方Introduction : MySQLdb is an thread-compatible interface to the popular MySQL database server that provides the Python database API. 它其實相當於翻譯了對應C的接口。

使用這種數據庫接口大多是就是執行連接數據庫-執行query-提取數據-關閉連接 這幾個步驟。MySQLdb提供比較關鍵的對象,分別是Connection、Cursor、Result。具體使用步驟很簡單先不寫了,先寫一些個人認為比較重要、值得注意的地方。

1、雖然在MySQLdb.Connect(host ,user , passw , db)函數中,我們經常使用的只是這幾個參數,但是其實裡面還有很多比如字符集、線程安全、ssl等也都是很重要的參數,使用時要身份注意。

2、當使用Connection.query()函數進行query後,connection 對象可以返回兩種result,分別是store_result和use_result,store_result 將結果集存回client端,而use_result則是結果集保存在server端,並且維護了一個連接,會佔用server資源。此時,不可以進行任何其他的查詢。建議使用store_result,除非返回結果集(result set)過大或是無法使用limit的情形。

3、提取(fetch)數據的返回形式大多有三種情形。 as a tuple(how=0) ;as dictionaries, key=column or table.column if duplicated(how=1);as dictionaries, key=table.column (how=2)

4、每次fetch,在result內部都會產生數據位置的移動,也就是說假如有10行數據,執行result.fetch_row(3,0),會得到前三行,再執行result.fetch_row(3,0),則會得到中間的三行,所以說fetch會導致position的移動。另外值得注意的是,如果使用use_result,也就是數據存儲在server時,在fetch所有的條目之前,不能進行任何的query操作。

5、mysql本身不支持游標(Cursor),但是MySQLdb對Cursor進行了仿真。重要的執行query方法有execute 和 executemany 。execute方法,執行單條sql語句,調用executemany方法很好用,數據庫性能瓶頸很大一部分就在於網絡IO和磁盤IO將多個insert放在一起,只執行一次IO,可以有效的提升數據庫性能。游標cursor具有fetchone、fetchmany、fetchall三個方法提取數據,每個方法都會導致游標遊動,所以必須關注游標的位置。游標的scroll(value, mode)方法可以使得游標進行捲動,mode參數指定相對當前位置(relative)還是以絕對位置(absolute)進行移動。

6、MySQLdb提供了很多函數方法,在官方指南里沒有完全羅列,使用者可以用help去看看,裡面提供了很多方便的東西。

7、對於mysql來說,如果使用支持事務的存儲引擎,那麼每次操作後,commit是必須的,否則不會真正寫入數據庫,對應rollback可以進行相應的回滾,但是commit後是無法再rollback的。commit() 可以在執行很多sql指令後再一次調用,這樣可以適當提升性能。

8、executemany處理過多的命令也不見得一定好,因為數據一起傳入到server端,可能會造成server端的buffer溢出,而一次數據量過大,也有可能產生一些意想不到的麻煩。合理,分批次executemany是個不錯的辦法。

最後,我自己寫了個pyMysql模塊,主要是對MySQLdb提供的常用方法進行了簡單的再次封裝,也藉此機會好好學習下MySQLdb,以及練習python的編碼。該程序使用的數據庫表,採用myisam引擎,所以沒加上commit(),一般最好還是要加上的。

mysql 使用方法

據了知道的.至少有兩個方法.

1 .在 cmd 裡面 輸入 net stop mysql 停掉mysql,然後在數據庫安裝目錄找到 mysqldb 的文件夾,可以看到裡面有很多文件的. 那就是你的數據庫的表了.把一整個 mysqldb 文件複製到 另一台機上的 數據庫存放的目錄下面. 然後同樣目標機器上執行 net stop mysql 以及 net start mysql,就可以了. 這個方法有缺點,就是要停下數據庫.

2. 安裝phpmyadmin 把數據庫備份出來,然後再恢復到目標機器.兩部機器都不用停數據庫,不過要安裝 phpmyadmin 或者 Navicat for MySQL

我在用python做一個小的對賬單管理系統,需要把txt導入mysql數據庫,用mysqldb庫,

MySQLdb.connect是python 連接MySQL數據庫的方法,在Python中 import MySQLdb即可使用,至於connect中的參數很簡單:

host:MySQL服務器名

user:數據庫使用者

password:用戶登錄密碼

db:操作的數據庫名

charset:使用的字符集(一般是gb2312)

cursor = db.cursor() 其實就是用來獲得python執行Mysql命令的方法,也就是

我們所說的操作游標

下面cursor.execute則是真正執行MySQL語句,即查詢TABLE_PARAMS表的數據。

至於fetchall()則是接收全部的返回結果行 row就是在python中定義的一個變量,用來接收返回結果行的每行數據。同樣後面的r也是一個變量,用來接收row中的每個字符,如果寫成C的形式就更好理解了

for(string row = ”; row= cursor.fetchall(): row++)

for(char r = ”; r= row; r++)

printf(“%c”, r);

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/311566.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-05 13:23
下一篇 2025-01-05 13:24

相關推薦

  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網絡應用中流…

    編程 2025-04-29
  • Python元祖操作用法介紹

    本文將從多個方面對Python元祖的操作進行詳細闡述。包括:元祖定義及初始化、元祖遍歷、元祖切片、元祖合併及比較、元祖解包等內容。 一、元祖定義及初始化 元祖在Python中屬於序…

    編程 2025-04-29

發表回復

登錄後才能評論