一. MySQL 安裝
- apt-get install mysql-server
- apt-get isntall mysql-client
- apt-get install libmysqlclient-dev
- 上面三條指令安裝完後,可以用sudo netstat -tap | grep mysql,查看是否安裝成功並啓動。
二. Python 安裝
- apt-get install python3.7
- 安裝成功後,直接輸入命令python或者python3,即可進入python。
- 或者用python test.py、python3 test.py來運行py文件。
三. pymysql 安裝
- 常見的Python+MySQL有:MySQLdb(python2版本支持)和PyMySQL(python3版本支持)。
- apt-get install python-pip
- 如果要安裝python3可以用的庫,要通過pip3,安裝方式是:apt-get install python3-pip
四. pymysql 簡單使用
1. 程序Access denied問題解決:
- 這個過程找到了兩種解決方案,但不知道是哪一種解決問題的。所以都先記錄下吧
- 方案一:
①登入MySQL
②進入你項目使用的數據庫
③輸入以下命令:
grant usage on *.* to 你項目使用的user@localhost identified by'你的密碼';
④最後輸入:
FLUSH PRIVILEGES;
- 方案二:
更換了root密碼的認證方式,新版mysql使用的caching_sha2_password,換成mysql_native_password就可以連上了。
①登入MySQL
②然後輸入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpasswd';
2. 使用示例
import pymysql
#連接到數據庫
user_db=pymysql.connect(host='127.0.0.1',user='root',passwd='sjl1103',db='test')
#獲取遊標對象
cursor=user_db.cursor()
#建立一個表格
create="CREATE TABLE movie_test(M_year VARCHAR(4),Movie VARCHAR(20),Trans VARCHAR(20),Locate VARCHAR(20),Director VARCHAR(10),Personal_Score DOUBLE,DB_Score DOUBLE)"
cursor.execute(create)
user_db.commit()
#插入內容
insert_table_sql = """\
INSERT INTO movie_test(M_year,Movie,Trans,Locate,Director,Personal_Score,DB_Score)
VALUES('{M_year}','{Movie}','{Trans}','{Locate}','{Director}','{Personal_Score}','{DB_Score}')
"""
#INSERT INTO movie_test VALUES('2018','我不是藥神',' ','華語','文牧野',8.8,8.9);
#INSERT INTO movie_test VALUES('2017','Three Billboards','三塊廣告牌','歐美','馬丁·麥克唐納',8.7,8.7);
cursor.execute(insert_table_sql.format(M_year='2018',Movie='我不是藥神',Trans=' ',Locate='華語',Director='文牧野',Personal_Score=8.8,DB_Score=8.9))
cursor.execute(insert_table_sql.format(M_year='2017',Movie='Three Billboards',Trans='三塊廣告牌',Locate='歐美',Director='馬丁·麥克唐納',Personal_Score=8.7,DB_Score=8.7))
user_db.commit()
#顯示內容
sql_select = """SELECT * FROM movie_test"""
cursor.execute(sql_select)
result = cursor.fetchall()
for row in result:
for each_one in row:
print(each_one,end=' ')
print(" ")
print("\n")
#關閉數據庫
user_db.close()
此時進入MySQL查看,發現確實有表存在: