1. 程式人生 > >Android+伺服器上資料進行操作+mysql的增刪改查

Android+伺服器上資料進行操作+mysql的增刪改查

我們都知道我們的資料都在資料庫上

我們同樣要對我們的資料進行操作,我們怎麼搞呢

我們首先要知道mysql.db這個東西,這是我們連結資料庫的包

然而我們發現這個東西一直報錯,經過編者的仔細尋找,終於解決了

這裡:我只說mac本的方法

第一步我們需要下載一個brew,開啟終端輸入命令:ruby -e "$(curl —insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

第二步輸入命令:brew install mysql

第三步命令:pip install MySQL-python==1.2.5

完成後我們開啟我們的Python就不會報錯了

我們開始我們的增刪改查的操作附上程式碼:

select.py

#-*-coding:utf-8-*-
#匯入mysql包
import MySQLdb
#開啟資料庫連線
#1.host主機的ip
#2.user資料庫使用者名稱
#3.passwd資料庫密碼
#4.db資料庫名字
#5.port資料庫埠號預設3306
#如果設定允許遠端連線資料庫,在mysql庫裡面,user表host欄位內容改成%,同時重新整理資料庫flush privileges
host="39.107.102.34"
#資料庫使用者名稱
user="root"
#資料庫密碼
password="123456"
#資料庫名字 database='qiezi' #資料庫埠號 port=3306 db=MySQLdb.connect(host,user,password,database,port) #獲取curse curse=db.cursor() #1.執行sql語句,返回所有的列使用* # sql="select * from qiezzilogin where userId=1" # curse.execute(sql) # #獲取列表 # persons=curse.fetchall() # #for迴圈列印 # for person in persons: # print person[0],person[1],person[2],person[3]
#2.模糊查詢所有,關鍵欄位like ,這種情況下索引是起作用的,但是如果%放在前面索引就不會起作用的,索引會無效 sql="select * from qiezzilogin where username like 'zhangsan3000%'" curse.execute(sql) persons=curse.fetchall() for person in persons: print person[0],person[1],person[2],person[3] #3.返回指定的列表,比如返回userId username # sql="select userId,username from qiezzilogin where userId=1" # curse.execute(sql) # persons=curse.fetchall() # for person in persons: # print person[0],person[1]
#4.模糊查詢倒敘返回 關鍵字desc 順序asc
#需要配合使用 order by 需要倒敘或者順序的欄位DESC|ASC 注意預設是升序返回
#倒敘
# sql="select * from qiezzilogin where username like 'zhangsan3000%'order by username DESC "
#同時滿足兩個條件的查詢語句,同時返回資料
sql="select * from qiezzilogin where username='zhangsan1' and userId=2"
#只滿足一個條件就返回資料
# sql="select * from qiezzilogin where username='zhangsan1' or userId=1 order by userId DESC "
staus=curse.execute(sql)
print staus
persons=curse.fetchall()
for person in persons:
    print person[0],person[1],person[2],person[3]

insert.py
 
#-*- coding:utf-8 -*-
# 匯入mysql
import MySQLdb

# host
host = '39.107.102.34'
# 使用者名稱
user = 'root'
# 密碼
pwd = '123456'
# 資料庫
database = '1509E'
# 埠號
port = 3306
# 連結資料庫
db = MySQLdb.connect(host,user,pwd,database,port)

# 或許遊標
course = db.cursor()
#增加的sql語句
#格式 insert into 表明(增加的欄位的順序,也可以不寫)values(欄位)
sql="insert into apps values(0,'李四','www.baidu.com','CN')"
# sql="insert into qiezzilogin(username,password,token) VALUES ('李四1','123456','22222222222')"
try:
    #執行增加
status=course.execute(sql)
    print status
    #提交
db.commit()
except:
    #回滾
db.rollback()
#查詢出來
sql1="select * from apps where app_name='李四'"
course.execute(sql1)
#查詢資料
persons=course.fetchall()
for person in persons:
    print person[0],person[1],person[2],person[3]

#關閉資料庫
db.close()













delete.py
 
#-*- coding:utf-8 -*-
# 匯入mysql
import MySQLdb

# host
host = '39.107.102.34'
# 使用者名稱
user = 'root'
# 密碼
pwd = '123456'
# 資料庫
database = 'qiezi'
# 埠號
port = 3306
# 連結資料庫
db = MySQLdb.connect(host,user,pwd,database,port)

# 或許遊標
course = db.cursor()
#刪除userId=0的使用者名稱
#delete from 表 where需要刪除的條件
sql="delete from qiezzilogin where userId=1"
try:
    #執行刪除語句
statue=course.execute(sql)
    #1代表刪除成功,0刪除失敗
print statue
    db.commit()
except:
    #如果沒有刪除成功,執行回滾
db.rollback()
#關閉資料庫
db.close()


update.py
 
#-*- coding:utf-8 -*-
# 匯入mysql
import MySQLdb

# host
host = '39.107.102.34'
# 使用者名稱
user = 'root'
# 密碼
pwd = '123456'
# 資料庫
database = 'qiezi'
# 埠號
port = 3306
# 連結資料庫
db = MySQLdb.connect(host,user,pwd,database,port)

# 或許遊標
course = db.cursor()
#修改的關鍵字update 表名set 需要修改的欄位='值'where 欄位=該誰
# sql="update qiezzilogin set password=654321 where userId=1"
#同時更新多個欄位
sql="update qiezzilogin set password=123456,token='111111111111'where userId=1"
try:
    #執行修改
statue=course.execute(sql)
    #修改有返回值,0程式碼修改失敗,1代表修改成功
print statue
    db.commit()
except:
    #如果修改發生異常,執行回滾
db.rollback()
#查詢出來看一下
sql_find="select * from qiezzilogin where userId=1"
course.execute(sql_find)
#返回資料
persons=course.fetchall()
for person in persons:
    print  person[0],person[1],person[2],person[3]
db.close()




下面我們拓展點基礎之外的資料庫操作
union這個名詞是兩表合併預設就是去重,加個all就是不去重,這裡我們需要在我們的資料庫裡建立兩個表,表裡的資料自己寫(你可以去Python菜鳥教程裡進行參考,哈哈哈)


 union.py
#-*- coding:utf-8 -*-
# 匯入mysql
import MySQLdb

# host
host = '39.107.102.34'
# 使用者名稱
user = 'root'
# 密碼
pwd = '123456'
# 資料庫
database = '1509E'
# 埠號
port = 3306
# 連結資料庫
db = MySQLdb.connect(host,user,pwd,database,port)

# 或許遊標
course = db.cursor()
# #兩表合併注意UNION預設去重     All表示不去重
# sql="select id,country,url from Websites UNION select id,country,url from apps"
# #執行sql語句
# course.execute(sql)
# #獲取資料
# places=course.fetchall()
# #使用for迴圈遍歷
# for place in places:
#     print place[0],place[1],place[2]
#分組查詢 關鍵欄位 group by需要分組查詢的欄位 後面與having配置需要的條件
#查詢 根據城市分組查詢,並輸出數量大於2的
#複合函式,統計數量的欄位COUNT(欄位)
sql="select country,COUNT(country) from Websites group by country HAVING count(country)>=2"
#執行sql
course.execute(sql)
#獲取
citys=course.fetchall()
for city in citys:
    print city[0],city[1]




左連線,右連線,內連線的使用
join.py
#-*- coding:utf-8 -*-
# 匯入mysql
import MySQLdb

# host
host = '39.107.102.34'
# 使用者名稱
user = 'root'
# 密碼
pwd = '123456'
# 資料庫
database = '1509E'
# 埠號
port = 3306
# 連結資料庫
db = MySQLdb.connect(host,user,pwd,database,port)

# 或許遊標
course = db.cursor()
# #1.左連線 取左表所有的記錄,取右表和左表相同的記錄
# sql="select a.runoob_id,a.runoob_title,a.runoob_author,a.submission_date,b.runoob_count from runoob_tbl a LEFT JOIN " \
#     "tcount_tbl b on a.runoob_author = b.runoob_author"
#執行sql語句
# #2.右連線: 取右表所有的記錄,取左邊和右表相同的記錄
# sql="select a.runoob_id,a.runoob_title,b.runoob_author,a.submission_date,b.runoob_count from runoob_tbl a RIGHT JOIN " \
#        "tcount_tbl b on a.runoob_author = b.runoob_author"
#3.內連線 :取兩表相同的記錄
sql="select a.runoob_id,a.runoob_title,b.runoob_author,a.submission_date,b.runoob_count from runoob_tbl a inner JOIN " \
      "tcount_tbl b on a.runoob_author = b.runoob_author"
course.execute(sql)
persons=course.fetchall()
for person in persons:
    print  person[0],person[1],person[2],person[3],person[4]


 avg平均值在資料庫的呼叫
avg.py
#-*- coding:utf-8 -*-
# 匯入mysql
import MySQLdb

# host
host = '39.107.102.34'
# 使用者名稱
user = 'root'
# 密碼
pwd = '123456'
# 資料庫
database = '1509E'
# 埠號
port = 3306
# 連結資料庫
db = MySQLdb.connect(host,user,pwd,database,port)

# 或許遊標
course = db.cursor()
# 1: 求每一個同學的平均成績 group by name ,並且大於 80
# 2: 求各科的平均成績
# 3: 求全部的平均成績
#1.
# sql="select name,AVG(score) from score group by name having AVG(score)>80"
#2.
# sql="select subject,AVG(score) from score group by subject"
#3.
sql="select AVG(score) from score"
course.execute(sql)
students=course.fetchall()
for student in students:
    # print student[0],student[1]
print student[0]




資料庫的建表參考菜鳥教程。。。