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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

python连接数据库的技术_Python操作MySQL数据库的三种方法

發布時間:2025/3/20 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python连接数据库的技术_Python操作MySQL数据库的三种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1) 什么是MySQLdb?

MySQLdb 是用于 Python 連接 MySQL 數據庫的接口,它實現了 Python 數據庫 API 規范 V2.0,基于 MySQL C API 上建立的。

$ tar zxvf MySQL-python-.tar.gz

$ cd MySQL-python-

$ python setup.py build

$ python setup.py install

(3) MySQLdb 的使用:

#!/usr/bin/env python

coding=utf-8

import MySQLdb

def connectdb():

print('連接到mysql服務器...')

打開數據庫連接

# 用戶名:p, 密碼:12345.,用戶名和密碼需要改成你自己的mysql用戶名和密碼,并且要創建數據庫TESTDB,并在TESTDB數據庫中創建好表Student

db = MySQLdb.connect("localhost","p","12345.","TESTDB")

print('連接上了!')

return db

def createtable(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# 如果存在表Sutdent先刪除

cursor.execute("DROP TABLE IF EXISTS Student")

sql = """CREATE TABLE Student (

ID CHAR(10) NOT NULL,

Name CHAR(8),

Grade INT )"""

# 創建Sutdent表

cursor.execute(sql)

def insertdb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = """INSERT INTO Student

VALUES ('001', 'CZQ', 70),

('002', 'LHQ', 80),

('003', 'MQ', 90),

('004', 'WH', 80),

('005', 'HP', 70),

('006', 'YF', 66),

('007', 'TEST', 100)"""

#sql = "INSERT INTO Student(ID, Name, Grade) \

# VALUES ('%s', '%s', '%d')" % \

# ('001', 'HP', 60)

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# Rollback in case there is any error

print '插入數據失敗!'

db.rollback()

def querydb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 查詢語句

#sql = "SELECT * FROM Student \

# WHERE Grade > '%d'" % (80)

sql = "SELECT * FROM Student"

try:

# 執行SQL語句

cursor.execute(sql)

# 獲取所有記錄列表

results = cursor.fetchall()

for row in results:

ID = row[0]

Name = row[1]

Grade = row[2]

# 打印結果

print "ID: %s, Name: %s, Grade: %d" % \

(ID, Name, Grade)

except:

print "Error: unable to fecth data"

def deletedb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

SQL 刪除語句

sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)

try:

# 執行SQL語句

cursor.execute(sql)

# 提交修改

db.commit()

except:

print '刪除數據失敗!'

# 發生錯誤時回滾

db.rollback()

def updatedb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 更新語句

sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')

try:

# 執行SQL語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

print '更新數據失敗!'

# 發生錯誤時回滾

db.rollback()

def closedb(db):

db.close()

def main():

db = connectdb() # 連接MySQL數據庫

createtable(db) # 創建表

insertdb(db) # 插入數據

print '\n插入數據后:'

querydb(db)

deletedb(db) # 刪除數據

print '\n刪除數據后:'

querydb(db)

updatedb(db) # 更新數據

print '\n更新數據后:'

querydb(db)

closedb(db) # 關閉數據庫

if name == 'main':

main()

#!/usr/bin/env python

import MySQLdb

try:

conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)

cur=conn.cursor()

cur.execute('select user,password from user')

cur.close()

conn.close()

except MySQLdb.Error,e:

print "Mysql Error %d: %s" % (e.args[0], e.args[1])

#!/usr/bin/env python

#* coding:utf-8 *

import MySQLdb

try:

conn = MySQLdb.Connect(host='192.168.8.40',user='root',passwd='root',db='mysql',port=3306)

cur = conn.cursor()

rs = cur.execute('select user,password,host from user')

rs = cur.execute('create database if not exists python')

conn.select_db('python')

cur.execute('create table test(id int,info varchar(30))')

value = [1,'hi jack']

cur.execute('insert into test values(%s,%s)',value)

values = []

for i in range(20):

values.append((i,'hi jack' + str(i)))

cur.executemany('insert into test values(%s,%s)',values)

cur.execute('update test set info="i am jack" where id=3')

conn.commit()

cur.close()

conn.close()

except MySQLdb.Error,e:

print 'mysql error msg: %d,%s' % (e.args[0],e.args[1])

import MySQLdb

try:

conn = MySQLdb.Connect(host='192.168.8.40',user='root',passwd='root',db='mysql',port=3306,charset='utf8')

cur = conn.cursor()

conn.select_db('python')

count = cur.execute('select * from test')

print 'there has %s rows record' % count

result = cur.fetchone()

print result

print 'id: %s info %s' % result

result2 = cur.fetchmany(3)

for record in result2:

print record

print '=='*10

cur.scroll(0,mode='absolute')

result3 = cur.fetchall()

for record in result3:

print record[0] ,'---',record[1]

conn.commit()

cur.close()

conn.close()

except MySQLdb.Error,e:

print 'mysql error msg: %d,%s' % (e.args[0],e.args[1])

查詢后中文會顯示亂碼,但在數據庫中卻是正常的,發現用一個屬性有可搞定:

在Python代碼

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一個屬性:

改為:

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8')

charset是要跟你數據庫的編碼一樣,如果是數據庫是gb2312 ,則寫charset='gb2312'。

然后,這個連接對象也提供了對事務操作的支持,標準的方法

commit() 提交

rollback() 回滾

cursor用來執行命令的方法:

callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數

execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數

executemany(self, query, args):執行單挑sql語句,但是重復執行參數列表里的參數,返回值為受影響的行數

nextset(self):移動到下一個結果集

cursor用來接收返回值的方法:

fetchall(self):接收全部的返回結果行.

fetchmany(self, size=None):接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據.

fetchone(self):返回一條結果行.

scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果 mode='absolute',則表示從結果集的第一行移動value條.

?

PyMySQL 的使用

(1) 什么是 PyMySQL?

PyMySQL 是 Python 中用于連接 MySQL 服務器的一個庫,它遵循 Python 數據庫 API 規范 V2.0,并包含了 pure-Python MySQL 客戶端庫。

(2) 安裝 PyMysql:

pip install PyMysql

(3) 使用 PyMySQL:

#!/usr/bin/env python

coding=utf-8

import pymysql

def connectdb():

print('連接到mysql服務器...')

打開數據庫連接

# 用戶名:p, 密碼:12345.,用戶名和密碼需要改成你自己的mysql用戶名和密碼,并且要創建數據庫TESTDB,并在TESTDB數據庫中創建好表Student

db = pymysql.connect("localhost","hp","Hp12345.","TESTDB")

print('連接上了!')

return db

def createtable(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# 如果存在表Sutdent先刪除

cursor.execute("DROP TABLE IF EXISTS Student")

sql = """CREATE TABLE Student (

ID CHAR(10) NOT NULL,

Name CHAR(8),

Grade INT )"""

# 創建Sutdent表

cursor.execute(sql)

def insertdb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = """INSERT INTO Student

VALUES ('001', 'CZQ', 70),

('002', 'LHQ', 80),

('003', 'MQ', 90),

('004', 'WH', 80),

('005', 'HP', 70),

('006', 'YF', 66),

('007', 'TEST', 100)"""

#sql = "INSERT INTO Student(ID, Name, Grade) \

# VALUES ('%s', '%s', '%d')" % \

# ('001', 'HP', 60)

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# Rollback in case there is any error

print '插入數據失敗!'

db.rollback()

def querydb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 查詢語句

#sql = "SELECT * FROM Student \

# WHERE Grade > '%d'" % (80)

sql = "SELECT * FROM Student"

try:

# 執行SQL語句

cursor.execute(sql)

# 獲取所有記錄列表

results = cursor.fetchall()

for row in results:

ID = row[0]

Name = row[1]

Grade = row[2]

# 打印結果

print "ID: %s, Name: %s, Grade: %d" % \

(ID, Name, Grade)

except:

print "Error: unable to fecth data"

def deletedb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 刪除語句

sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)

try:

# 執行SQL語句

cursor.execute(sql)

# 提交修改

db.commit()

except:

print '刪除數據失敗!'

# 發生錯誤時回滾

db.rollback()

def updatedb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 更新語句

sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')

try:

# 執行SQL語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

print '更新數據失敗!'

# 發生錯誤時回滾

db.rollback()

def closedb(db):

db.close()

def main():

db = connectdb() # 連接MySQL數據庫

createtable(db) # 創建表

insertdb(db) # 插入數據

print '\n插入數據后:'

querydb(db)

deletedb(db) # 刪除數據

print '\n刪除數據后:'

querydb(db)

updatedb(db) # 更新數據

print '\n更新數據后:'

querydb(db)

closedb(db) # 關閉數據庫

if name == 'main':

main()

import pymysql

打開數據庫連接(ip/數據庫用戶名/登錄密碼/數據庫名)

db = pymysql.connect("localhost", "root", "root", "test")

使用 cursor() 方法創建一個游標對象 cursor

cursor = db.cursor()

使用 execute() 方法執行 SQL 查詢

cursor.execute("SELECT VERSION()")

使用 fetchone() 方法獲取單條數據.

data = cursor.fetchone()

print("Database version : %s " % data)

關閉數據庫連接

db.close()

import pymysql

打開數據庫連接(ip/數據庫用戶名/登錄密碼/數據庫名)

db = pymysql.connect("localhost", "root", "root", "test")

使用 cursor() 方法創建一個游標對象 cursor

cursor = db.cursor()

SQL 插入語句

sql = """INSERT INTO user(name)

VALUES ('Mac')"""

try:

執行sql語句

cursor.execute(sql)

提交到數據庫執行

db.commit()

except:

如果發生錯誤則回滾

db.rollback()

關閉數據庫連接

db.close()

import pymysql

打開數據庫連接(ip/數據庫用戶名/登錄密碼/數據庫名)

db = pymysql.connect("localhost", "root", "root", "test")

使用 cursor() 方法創建一個游標對象 cursor

cursor = db.cursor()

SQL 查詢語句

sql = "SELECT * FROM user"

try:

執行SQL語句

cursor.execute(sql)

# 獲取所有記錄列表

results = cursor.fetchall()

for row in results:

id = row[0]

name = row[1]

# 打印結果

print("id=%s,name=%s" % \

(id, name))

except:

print("Error: unable to fecth data")

關閉數據庫連接

db.close()

import pymysql

打開數據庫連接(ip/數據庫用戶名/登錄密碼/數據庫名)

db = pymysql.connect("localhost", "root", "root", "test")

使用 cursor() 方法創建一個游標對象 cursor

cursor = db.cursor()

SQL 更新語句

sql = "UPDATE user SET name = 'Bob' WHERE id = 1"

try:

執行SQL語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

發生錯誤時回滾

db.rollback()

關閉數據庫連接

db.close()

import pymysql

打開數據庫連接(ip/數據庫用戶名/登錄密碼/數據庫名)

db = pymysql.connect("localhost", "root", "root", "test")

使用 cursor() 方法創建一個游標對象 cursor

cursor = db.cursor()

SQL 刪除語句

sql = "DELETE FROM user WHERE id = 1"

try:

執行SQL語句

cursor.execute(sql)

# 提交修改

db.commit()

except:

發生錯誤時回滾

db.rollback()

關閉數據庫連接

db.close()

?

mysql.connector 的使用

(1) 什么是 mysql.connector?

由于 MySQL 服務器以獨立的進程運行,并通過網絡對外服務,所以,需要支持 Python 的 MySQL 驅動來連接到 MySQL 服務器。

目前,有兩個 MySQL 驅動:

mysql-connector-python:是 MySQL 官方的純 Python 驅動;

MySQL-python :是封裝了 MySQL C驅動的 Python 驅動。

(2) 安裝 mysql.connector:

pip install mysql-connector-python

pip install MySQL-python

(3) 使用 mysql.connector:

#!/usr/bin/env python

coding=utf-8

import mysql.connector

def connectdb():

print('連接到mysql服務器...')

打開數據庫連接

# 用戶名:p, 密碼:12345.,用戶名和密碼需要改成你自己的mysql用戶名和密碼,并且要創建數據庫TESTDB,并在TESTDB數據庫中創建好表Student

db = mysql.connector.connect(user="p", passwd="12345.", database="TESTDB", use_unicode=True)

print('連接上了!')

return db

def createtable(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# 如果存在表Sutdent先刪除

cursor.execute("DROP TABLE IF EXISTS Student")

sql = """CREATE TABLE Student (

ID CHAR(10) NOT NULL,

Name CHAR(8),

Grade INT )"""

# 創建Sutdent表

cursor.execute(sql)

def insertdb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = """INSERT INTO Student

VALUES ('001', 'CZQ', 70),

('002', 'LHQ', 80),

('003', 'MQ', 90),

('004', 'WH', 80),

('005', 'HP', 70),

('006', 'YF', 66),

('007', 'TEST', 100)"""

#sql = "INSERT INTO Student(ID, Name, Grade) \

# VALUES ('%s', '%s', '%d')" % \

# ('001', 'HP', 60)

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# Rollback in case there is any error

print '插入數據失敗!'

db.rollback()

def querydb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 查詢語句

#sql = "SELECT * FROM Student \

# WHERE Grade > '%d'" % (80)

sql = "SELECT * FROM Student"

try:

# 執行SQL語句

cursor.execute(sql)

# 獲取所有記錄列表

results = cursor.fetchall()

for row in results:

ID = row[0]

Name = row[1]

Grade = row[2]

# 打印結果

print "ID: %s, Name: %s, Grade: %d" % \

(ID, Name, Grade)

except:

print "Error: unable to fecth data"

def deletedb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 刪除語句

sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)

try:

# 執行SQL語句

cursor.execute(sql)

# 提交修改

db.commit()

except:

print '刪除數據失敗!'

# 發生錯誤時回滾

db.rollback()

def updatedb(db):

使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 更新語句

sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')

try:

# 執行SQL語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

print '更新數據失敗!'

# 發生錯誤時回滾

db.rollback()

def closedb(db):

db.close()

def main():

db = connectdb() # 連接MySQL數據庫

createtable(db) # 創建表

insertdb(db) # 插入數據

print '\n插入數據后:'

querydb(db)

deletedb(db) # 刪除數據

print '\n刪除數據后:'

querydb(db)

updatedb(db) # 更新數據

print '\n更新數據后:'

querydb(db)

closedb(db) # 關閉數據庫

if name == 'main':

main()

?

?

?

?

?

?

?

?

?

?

?

?#!/usr/bin/python

#coding=utf-8

import mysql.connector

from mysql.connector import errorcode

class mysqlconnectordemo(object):

def init(self):

pass

def connect(self,conf):

try:

conn = mysql.connector.connect(**conf)

print("conn success!")

except mysql.connector.Error as err:

if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

print("Something is wrong with your user name or password")

elif err.errno == errorcode.ER_BAD_DB_ERROR:

print("Database does not exist")

else:

print(err)

else:

conn.close()

def query(self,conf,sql):

try:

conn = mysql.connector.connect(**conf)

print("conn success!")

cursor = conn.cursor()

try:

cursor.execute(sql)

values = cursor.fetchall()#返回是一個由元組構成的list,每一個元組是一行值

print type(values)

for i in values:

print i

except mysql.connector.Error as err:

print('query datas error!{}'.format(err))

except mysql.connector.Error as err:

if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

print("Something is wrong with your user name or password")

elif err.errno == errorcode.ER_BAD_DB_ERROR:

print("Database does not exist")

else:

print(err)

else:

conn.close()

def insert(self,conf,sql):

try:

conn = mysql.connector.connect(**conf)

print("conn success!")

cursor = conn.cursor()

try:

cursor.execute(sql)

conn.commit()

cursor.close()

except mysql.connector.Error as err:

print('insert datas error!{}'.format(err))

except mysql.connector.Error as err:

if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

print("Something is wrong with your user name or password")

elif err.errno == errorcode.ER_BAD_DB_ERROR:

print("Database does not exist")

else:

print(err)

else:

conn.close()

#!/usr/bin/python

#coding=utf-8

import MySQLdb

class mysqldbdemo(object):

def init(self):

pass

def connect(self):

conn = MySQLdb.connect("host_ip","user","password","database")

conn.close()

def query(self,sql):

conn = MySQLdb.connect("host_ip","user","password","database")

cursor = conn.cursor()

try:

cursor.execute(sql)

values = cursor.fetchall()#返回是一個由元組構成的tuple,每一個元組是一行值

print type(values)

for i in values:

print i

except:

print "Error: unable to fecth data"

conn.close()

def insert(self,sql):

conn = MySQLdb.connect("host_ip","user","password","database")

cursor = conn.cursor()

try:

cursor.execute(sql)

conn.commit()

except:

conn.rollback()

conn.close()

?

總結

以上是生活随笔為你收集整理的python连接数据库的技术_Python操作MySQL数据库的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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