Python運算元據庫(3)
通過python運算元據庫的行為,任何對資料庫進行的操作,都能夠通過python-mysqldb來實現。
建立資料庫
之前通過mysql>
寫SQL語句,建立了一個名字叫做mytest的資料庫,然後用下面的方式跟這個資料庫連線
>>> import MySQLdb
>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="mytest",charset="utf8")
在上面的連線中,引數db="mytest"
其實可以省略,如果省略,就是沒有跟任何具體的資料庫連線,只是連線了mysql。
>>> import MySQLdb
>>> conn = MySQLdb.connect("localhost","root","123123",port=3306,charset="utf8")
這種連線沒有指定具體資料庫,接下來就可以用類似mysql>
互動模式下的方式進行操作。
>>> conn.select_db("mytest")
>>> cur = conn.cursor()
>>> cur.execute("select * from users")
11L
>>> cur.fetchall()
((1L, u`hiekay`, u`123123`, u`hiekay@gmail.com`), (2L, u`python`, 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`u5854`, u`9988`, u`hiekay@gmail.com`), (8L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (9L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (10L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (11L, u`u5f20u4e09`, u`1122`, u`hiekay@gmail.com`))
用conn.select_db()
選擇要操作的資料庫,然後通過指標就可以操作這個資料庫了。其它的操作跟之前的一樣。
如果不選資料庫,而是要新建一個資料庫,如何操作?
>>> cur = conn.cursor()
>>> cur.execute("create database newtest")
1L
建立資料庫之後,就可以選擇這個資料庫,然後在這個資料庫中建立一個資料表。
>>> cur.execute("create table newusers (id int(2) primary key auto_increment, username varchar(20), age int(2), email text)")
0L
括號裡面是引號,引號裡面就是建立資料表的語句,一定是熟悉的。這樣就在newtest這個資料庫中建立了一個名為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實現了對資料庫和表的建立。
當然,能建就能刪除。可以自行嘗試,在這裡就不贅述,原理就是在cur.execute()
中寫SQL語句。
關閉一切
當進行完有關資料操作之後,最後要做的就是關閉遊標(指標)和連線。用如下命令實現:
>>> cur.close()
>>> conn.close()
注意關閉順序,和開啟的順序相反。
關於亂碼問題
這個問題是編寫web時常常困擾程式設計師的問題,亂碼的本質來自於編碼格式的設定混亂。所以,要特別提醒諸位注意。在用python-mysqldb的時候,為了放置亂碼,可以做如下統一設定:
- Python檔案設定編碼 utf-8(檔案前面加上 #encoding=utf-8)
- MySQL資料庫charset=utf8(資料庫的設定方法,可以網上搜尋)
- Python連線MySQL是加上引數 charset=utf8
- 設定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的配置檔案設定也必須配置成utf8 設定 MySQL 的 my.cnf 檔案,在 [client]/[mysqld]部分都設定預設的字符集(通常在/etc/mysql/my.cnf):
[client] default-character-set = utf8
[mysqld] default-character-set = utf8
相關文章
- Python學習:運算元據庫Python
- 運算元據庫
- [python] 基於Dataset庫運算元據庫Python
- python運算元據Python
- 運算元據庫表
- jmeter運算元據庫JMeter
- DDL:運算元據庫
- 教你如何用python運算元據庫mysql!!PythonMySql
- 利用 Sequelize 來運算元據庫
- java 運算元據庫備份Java
- Android中使用LitePal運算元據庫Android
- Django在Ubuntu下運算元據庫DjangoUbuntu
- 肖sir__jmeter之運算元據庫JMeter
- 資料庫誤運算元據恢復資料庫
- MySQL DML運算元據MySql
- 如何讓Designer更好地運算元據庫物件物件
- lavavel 中運算元據庫查詢別名
- spring-boot-route(九)整合JPA運算元據庫Springboot
- spring-boot-route(七)整合jdbcTemplate運算元據庫SpringbootJDBC
- spring-boot-route(八)整合mybatis運算元據庫SpringbootMyBatis
- uniapp單機軟體運算元據庫(安卓)APP安卓
- Go語言運算元據庫及其常規操作Go
- Oracle OCP(10):運算元據Oracle
- Python量化資料倉儲搭建系列2:Python運算元據Python
- 好程式設計師分享DDL之運算元據庫程式設計師
- sql運算元據庫(2)--->DQL、資料庫備份和還原SQL資料庫
- HelloDjango 系列教程:第 04 篇:Django 遷移、運算元據庫Django
- Golang 學習系列第四天:運算元據庫 PostgreSQLGolangSQL
- Pandas 基礎 (19) - 運算元據庫 (read_sql, to_sql)SQL
- 一文快速回顧 Java 運算元據庫的方式-JDBCJavaJDBC
- 到底應該先操作快取還是先運算元據庫?快取
- Oracle delete誤運算元據恢復(BBED)Oracledelete
- 透過延時從庫+binlog複製,恢復誤運算元據
- 基於Python的介面自動化實戰-基礎篇之pymysql模組運算元據庫PythonMySql
- Python 影像處理 OpenCV (12): Roberts 運算元、 Prewitt 運算元、 Sobel 運算元和 Laplacian 運算元邊緣檢測技術PythonOpenCV
- 併發環境下,先運算元據庫還是先操作快取?快取
- 分散式高效能狀態與原子運算元據庫slock簡介分散式
- 好程式設計師Java培訓分享JDBC運算元據庫的步驟程式設計師JavaJDBC