Android+伺服器上資料進行操作+mysql的增刪改查
阿新 • • 發佈:2019-01-08
我們都知道我們的資料都在資料庫上
我們同樣要對我們的資料進行操作,我們怎麼搞呢
我們首先要知道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]資料庫的建表參考菜鳥教程。。。