摘要:用選擇要操作的數(shù)據(jù)庫,然后通過指針就可以操作這個數(shù)據(jù)庫了。這樣就在這個數(shù)據(jù)庫中創(chuàng)建了一個名為的表這是查看表的方式。樹欲靜而風不止,小偷在行動。所以,要特別提醒諸位注意。
通過python操作數(shù)據(jù)庫的行為,除了能夠完成前面兩講中的操作之外(當然,那是比較常用的),其實任何對數(shù)據(jù)庫進行的操作,都能夠通過python-mysqldb來實現(xiàn)。
建立數(shù)據(jù)庫在《用python操作數(shù)據(jù)庫(1)》中,我是通過mysql>寫SQL語句,建立了一個名字叫做qiwsirtest的數(shù)據(jù)庫,然后用下面的方式跟這個數(shù)據(jù)庫連接
>>> import MySQLdb >>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",charset="utf8")
在上面的連接中,參數(shù)db="qiwsirtest"其實可以省略,如果省略,就是沒有跟任何具體的數(shù)據(jù)庫連接,只是連接了mysql。
>>> import MySQLdb >>> conn = MySQLdb.connect("localhost","root","123123",port=3306,charset="utf8")
這種連接沒有指定具體數(shù)據(jù)庫,接下來就可以用類似mysql>交互模式下的方式進行操作。
>>> conn.select_db("qiwsirtest") >>> cur = conn.cursor() >>> cur.execute("select * from users") 7L >>> cur.fetchall() ((1L, u"qiwsir", u"123123", u"qiwsir@gmail.com"), (2L, u"mypython", u"123456", u"python@gmail.com"), (3L, u"google", u"111222", u"g@gmail.com"), (4L, u"facebook", u"222333", u"f@face.book"), (5L, u"github", u"333444", u"git@hub.com"), (6L, u"docker", u"444555", u"doc@ker.com"), (7L, u"u8001u9f50", u"9988", u"qiwsir@gmail.com"))
用conn.select_db()選擇要操作的數(shù)據(jù)庫,然后通過指針就可以操作這個數(shù)據(jù)庫了。其它的操作跟前兩講一樣了。
如果不選數(shù)據(jù)庫,而是要新建一個數(shù)據(jù)庫,如何操作?
>>> cur = conn.cursor() >>> cur.execute("create database newtest") 1L
建立數(shù)據(jù)庫之后,就可以選擇這個數(shù)據(jù)庫,然后在這個數(shù)據(jù)庫中建立一個數(shù)據(jù)表。
>>> cur.execute("create table newusers (id int(2) primary key auto_increment, username varchar(20), age int(2), email text)") 0L
括號里面是引號,引號里面就是創(chuàng)建數(shù)據(jù)表的語句,看官一定是熟悉的。這樣就在newtest這個數(shù)據(jù)庫中創(chuàng)建了一個名為newusers的表
>>> cur.execute("show tables") 1L >>> cur.fetchall() ((u"newusers",),)
這是查看表的方式。當然,看官可以在mysql>交互模式下查看是不是存在這個表。如下:
mysql> use newtest; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------+ | Tables_in_newtest | +-------------------+ | newusers | +-------------------+ 1 row in set (0.00 sec) mysql> desc newusers; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(2) | NO | PRI | NULL | auto_increment | | username | varchar(20) | YES | | NULL | | | age | int(2) | YES | | NULL | | | email | text | YES | | NULL | | +----------+-------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)
以上就通過python-mysqldb實現(xiàn)了對數(shù)據(jù)庫和表的建立。
當然,能建就能刪除。看官可以自行嘗試,在這里就不贅述,原理就是在cur.execute()中寫SQL語句。
關(guān)閉一切當進行完有關(guān)數(shù)據(jù)操作之后,最后要做的就是關(guān)閉游標(指針)和連接。用如下命令實現(xiàn):
>>> cur.close() >>> conn.close()
注意關(guān)閉順序,和打開的順序相反。
為什么要關(guān)閉?這個問題有點那個了。你把房子里面都收拾好了,如果離開房子,不關(guān)門嗎?不要以為自己生活在那個理想社會。樹欲靜而風不止,小偷在行動。更何況,如果不關(guān)閉,服務器的內(nèi)容總?cè)切〇|西而沒有釋放,早晚就滿了。所以,必須關(guān)閉。必須的。
關(guān)于亂碼問題這個問題是編寫web時常常困擾程序員的問題,亂碼的本質(zhì)來自于編碼格式的設(shè)置混亂。所以,要特別提醒諸位注意。在用python-mysqldb的時候,為了放置亂碼,可以做如下統(tǒng)一設(shè)置:
Python文件設(shè)置編碼 utf-8(文件前面加上 #encoding=utf-8)
MySQL數(shù)據(jù)庫charset=utf8(數(shù)據(jù)庫的設(shè)置方法,可以網(wǎng)上搜索)
Python連接MySQL是加上參數(shù) charset=utf8(在前面教程中都這么演示了,很重要)
設(shè)置Python的默認編碼為 utf-8 (sys.setdefaultencoding(utf-8),這個后面會講述)
代碼示例:
#encoding=utf-8 import sys import MySQLdb reload(sys) sys.setdefaultencoding("utf-8") db=MySQLdb.connect(user="root",charset="utf8")
MySQL的配置文件設(shè)置也必須配置成utf8 設(shè)置 MySQL 的 my.cnf 文件,在 [client]/[mysqld]部分都設(shè)置默認的字符集(通常在/etc/mysql/my.cnf):
[client] default-character-set = utf8 [mysqld] default-character-set = utf8
windows操作系統(tǒng)請看官自己google。
在我的網(wǎng)站上,有完整的本教程目錄,邀請您光臨,并不吝賜教: www.itdiffer.com
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37428.html
摘要:定義在中,用方括號表示一個,在方括號里面,可以是,也可以是類型的數(shù)據(jù),甚至也能夠是這種布爾值。前面在對進行操作的時候,有一些內(nèi)置函數(shù),比如,這是去掉左右空格的內(nèi)置函數(shù),也是的方法。 前面的學習中,我們已經(jīng)知道了兩種python的數(shù)據(jù)類型:int和str。再強調(diào)一下對數(shù)據(jù)類型的理解,這個世界是由數(shù)據(jù)組成的,數(shù)據(jù)可能是數(shù)字(注意,別搞混了,數(shù)字和數(shù)據(jù)是有區(qū)別的),也可能是文字、或者是聲音、...
摘要:語句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個元素。與配合使用處理在程序運行中出現(xiàn)的異常情況。表示此行為空,不運行任何操作。在迭代器函數(shù)內(nèi)使用,用于返回一個元素。恭請到上瀏覽及時更新的教程零基礎(chǔ)學 小孩子剛剛開始學說話的時候,常常是一個字一個字地開始學,比如學說餃子,對他/她來講,似乎有點難度,大人也聰明,于是就簡化了,用餃餃來代替,其實就是讓孩子學會一個字就能表達。當然...
摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務,現(xiàn)整理出零基礎(chǔ)如何學爬蟲技術(shù)以供學習,。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務,服務范圍涵蓋社交網(wǎng)絡(luò)電子商務分類信息學術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務,現(xiàn)整理出零基礎(chǔ)如何學爬蟲技術(shù)以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:在干事情之前,先看看這個東東。行文到此,提醒列位,如果用的,請用,要加個括號。這樣的輸出算是對前面輸出的擴展了。據(jù)說,會逐漸逐漸取代前面的。恭請列為到我的上及時更新的內(nèi)容零基礎(chǔ)學 print的一些基本用法,在前面的講述中也涉及一些,本講是在復習的基礎(chǔ)上,盡量再多點內(nèi)容。 eval() 在print干事情之前,先看看這個東東。不是沒有用,因為說不定某些時候要用到。 >>> help...
摘要:還有別的方法得到鍵值嗎有一般不是只有一個方法實現(xiàn)某個操作的。刪除鍵值對的方法有兩個,但是兩者有一點區(qū)別,根據(jù)刪除相應的鍵值對,并返回該值沒有返回值,如果刪除鍵不存在,返回錯誤用可以把合并到中。 dict的很多方法跟list有類似的地方,下面一一道來,并且會跟list做一個對比 嵌套 嵌套在list中也存在,就是元素是list,在dict中,也有類似的樣式: >>> a_list ...
閱讀 1360·2021-11-24 09:39
閱讀 1349·2021-11-04 16:12
閱讀 2694·2021-09-24 09:47
閱讀 3341·2021-09-01 10:50
閱讀 1481·2019-08-30 15:55
閱讀 1427·2019-08-30 15:43
閱讀 647·2019-08-30 11:08
閱讀 3584·2019-08-23 18:33