日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

pymysql建表_Python数据库操作,针对pymysql 和 MYSQL数据库

發布時間:2025/3/8 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pymysql建表_Python数据库操作,针对pymysql 和 MYSQL数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此文將以MYSQL數據庫做為例子,pymysql庫作為驅動進行學習

安裝MYSQL數據庫與pymysql第三方庫

安裝pymysql庫不多做敘述

安裝navicat for mysql,此程序用來管理MYSQL數據庫

注意: 連接過程中可能會出現1251錯誤

解決辦法,在cmd命令下登錄mysql后輸入:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql的密碼'; 注意:引號中的為你自己設置的sql數據庫的密碼

FLUSH PRIVILEGES;

pymysql 連接mysql數據庫的驅動庫

Connection(host = None,user = None,password ='',database = None,port = 0,unix_socket = None,charset ='',sql_mode = None,read_default_file = None,conv = None,use_unicode = None,client_flag = 0,cursorclass = ,init_command = None,connect_timeout = 10,ssl = None,read_default_group = None,compress = None,named_pipe = None,自動提交=假,分貝=無,passwd的=無,local_infile =假,max_allowed_pa??cket個= 16777216,defer_connect =假,auth_plugin_map =無,read_timeout =無,write_timeout =無,bind_address =無,binary_prefix =假,程序名=無,server_public_key =無) 類

read_timeout - 以秒為單位讀取連接的超時(默認值:無 - 無超時)

write_timeout - 以秒為單位寫入連接的超時(默認值:無 - 無超時)

charset - 你要使用的Charset。

sql_mode - 要使用的默認SQL_MODE。

read_default_file - 指定my.cnf文件以從[client]部分下讀取這些參數。

conv - 使用轉換字典而不是默認字典。這用于提供類型的自定義編組和解組。見轉換器。

use_unicode - 是否默認為unicode字符串。對于Py3k,此選項默認為true。

client_flag - 要發送給MySQL的自定義標志。在constants.CLIENT中查找潛在值。

cursorclass - 要使用的自定義游標類。

init_command - 建立連接時要運行的初始SQL語句。

connect_timeout - 連接時拋出異常之前的超時。(默認值:10,最小值:1,最大值:31536000)

ssl - 類似于mysql_ssl_set()參數的參數的dict。目前,不支持capath和cipher參數。

read_default_group - 要在配置文件中讀取的組。

compress - 不支持

named_pipe - 不支持

autocommit - 自動提交模式。無表示使用服務器默認值。(默認值:False)

local_infile - 允許使用LOAD DATA LOCAL命令的布爾值。(默認值:False)

max_allowed_pa??cket - 發送到服務器的最大數據包大小(以字節為單位)。(默認值:16MB)僅用于限制小于默認值(16KB)的“LOAD LOCAL INFILE”數據包的大小。

defer_connect - 不要明確連接contruction - 等待連接調用。(默認值:False)

auth_plugin_map - 插件名稱的一個字典,用于處理該插件的類。該類將Connection對象作為構造函數的參數。該類需要一個認證方法,將認證包作為參數。對于對話框插件,可以使用提示(echo,prompt)方法(如果沒有authenticate方法)從用戶返回字符串。(實驗)

server_public_key - SHA256 authenticnticaiton插件公鑰值。(默認:無)

db - 數據庫的別名。(與MySQLdb兼容)

passwd - 密碼的別名。(與MySQLdb兼容)

binary_prefix - 在字節和bytearray上添加_binary前綴。(默認值:False)

常用方法

select_db(db) 設置db為當前數據庫

cursor() 創建一個游標對象,繼而對數據進行操作

游標對象方法:

execute(query,args = None ) 執行sql語句

executemany(query,args ) 運行多個sql語句

fetchall() 獲取所有行

fetchmany(size = None ) 獲取指定行數

fetchone() 獲取下一行

close() 關閉游標,將緩存的數據全部釋放到數據庫中

commit() 提交對數據庫中數據的修改,使之持久化到數據庫中

close() 關閉套接字連接退出

SQL語句

SQL 是一門 ANSI 的標準計算機語言,用來訪問和操作數據庫系統

MySQL 數據類型

Text 類型

image

Number 類型

image

Date 類型

image

SQL的語句分為兩大類,一類是DML,另一類是DDL

數據定義語言 (DDL) 用于創建或刪除表格

CREATE DATABASE 創建新數據庫

語句: CREATE DATABASE database_name

import pymysql

con = pymysql.connect('localhost','root','123456')

sql = '''CREATE DATABASE test

'''

with con.cursor()as cursor:

cursor.execute(sql)

con.close()

CREATE TABLE 創建新表

語句為以下形式,其中約束可以沒有

CREATE TABLE 表名稱

(

列名稱1 數據類型 約束,

列名稱2 數據類型 約束,

列名稱3 數據類型 約束,

....

)

約束條件

NOT NULL 值不能為空

UNIQUE 設置索引,一個表中可以有多個索引

在創建表時,末尾加上該語句

UNIQUE(列名稱)

表創建以后添加索引

ALTER TABLE 表名稱

ADD UNIQUE (列名稱)

撤銷索引

ALTER TABLE 表名稱

DROP INDEX 列名稱

PRIMARY KEY 設置主鍵,一個表中只能有一個主鍵

在創建表時,末尾加上該語句

PRIMARY KEY (列名稱)

表創建后添加主鍵

ALTER TABLE表名稱

ADD PRIMARY KEY (列名稱)

撤銷表中的主鍵

ALTER TABLE 表名稱

DROP PRIMARY KEY

FOREIGN KEY 一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY

在創建表時,末尾加上該語句

FOREIGN KEY (列名稱) REFERENCES 表名稱(列名稱)

表創建后添加FOREIGN KEY

ALTER TABLE 表名稱1

ADD FOREIGN KEY (列名稱)

REFERENCES 表名稱2(列名稱)

刪除表中的PRIMARY KEY

ALTER TABLE 表名稱

DROP FOREIGN KEY 約束名稱

CHECK 限制列中的值的范圍

在創建表時,末尾加上該語句

CHECK (列名稱 范圍限制)

表創建后添加限制范圍

ALTER TABLE 表名稱

ADD CHECK (列名稱 范圍限制)

撤銷范圍限制

ALTER TABLE 表名稱

DROP CONSTRAINT 約束名稱

DEFAULT 向列中插入默認值

在創建表時,向數據后添加默認值

列名稱 數據類型 DEFALUT 默認值

表創建后添加默認值

ALTER TABLE 表名稱

ALTER 列名稱 SET DEFAULT 默認值

刪除默認值

ALTER TABLE 表名稱

ALTER 列名稱 DROP DEFAULT

AUTO_INCREMENT 新記錄插入表中時生成一個唯一的數字

在創建表時,在后面添加該字段即可

列名稱 int NOT NULL AUTO_INCREMENT

默認以1開始遞增,但也可以通過賦值來改變初始值

ALTER TABLE 表名稱 AUTO_INCREMENT=100

創建新數據是不必向該數據進行賦值,但應加上NULL,代替該數據,會自動進行賦值

# 新建一個名為person的表,定義有id,name,age,address 其中id設置為主鍵,并采取自增形式

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = '''CREATE TABLE person

(

id INT(255) NOT NULL PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(255),

age INT(100),

address VARCHAR(255)

)

'''

with con.cursor()as cursor:

cursor.execute(sql)

con.close()

CREATE INDEX 創建表中的引索

用于加速搜索數據,用戶無法看見,只需設置常用的列

使用以下語句

CREATE INDEX 引索名稱

ON 表名稱 (列名稱)

DROP 刪除索引、表和數據庫

刪除表

DROP TABLE 表名稱

刪除數據庫

DROP DATABASE 數據庫名稱

刪除表中數據,但保留表

TRUNCATE TABLE 表名稱

ALTER TABLE 在已有的表中添加、修改或刪除列

向表中添加列

ALTER TABLE 表名稱

ADD 列名稱 列類型

向表中刪除列

ALTER TABLE 表名稱

DROP COLUMN 列名稱

更改表中某一列的數據類型

ALTER TABLE 表名稱

ALTER COLUMN 列名稱 列類型

數據操作語言 (DML) 包含用于更新、插入和刪除記錄的語法

SELECT 選取數據

SELECT 列名稱 FROM 表名稱

SELECT DISTINCT 去掉重復數據

SELECT DISTINCT 列名稱 FROM 表名稱

WHERE 有條件的選取數據

SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

運算符

= 等于

<> 不等于

> 大于

< 小于

>= 大于等于

<= 小于等于

操作符

IN 允許在 WHERE 子句中規定多個值,返回包含這些值的集合

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...)

BETWEEN 選取介于兩個值之間的數據范圍 左包右閉

SELECT column_name(s)

FROM table_name

WHERE column_name

BETWEEN value1 AND value2

AND 和 OR 對一個以上的條件對記錄進行過濾

SELECT * FROM 表名稱 WHERE 列名稱 運算符 值 AND 列名稱 運算符 值

總結: 可以將AND OR WHERE 組合起來使用,用于查找精確的數據

LIKE 于在 WHERE 子句中搜索列中的指定模式,類似于正則表達式

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern

通配符

image

ORDER BY 語句用于對結果集進行排序

默認順序排序,字母以ABC形式,數字從大到小

SELECT 列名稱 FROM 表名稱 ORDER BY 列名稱

添加DESC可變為逆序排序

SELECT 列名稱 FROM 表名稱 ORDER BY 列名稱 DESC

LIMIT 規定返回數據集合的最大值

"SELECT column_name(s)

FROM table_name

LIMIT number"

INTO 從一個表中選取輸出并復制到另一個表中,用于備份數據庫

備份到另一個數據庫中

SELECT *

INTO new_table_name IN externaldatabase

FROM old_tablename

備份到另一個表中

"SELECT *

INTO Persons_backup

FROM Persons

INSERT INTO 項數據庫添加新行

向一行中添加數據

INSERT INTO 表名稱 VALUES (值1, 值2,....) 添加所有值

向一行中選取的列中添加數據

INSERT INTO 表名稱 (列1, 列2,...) VALUES (值1, 值2,....)

UPDATE 修改表中的數據

修改某列數據為某值的數據為新值

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

向某行中的多列修改數據

UPDATE 表名稱 SET 列名稱1 = 新值1,列名稱2 = 新值2,…. WHERE 列名稱 = 某值

DELETE 刪除表中的行

刪除列名稱為某值的所有行

DELETE FROM 表名稱 WHERE 列名稱 = 值

刪除所有行,即清空所有數據

DELETE * FROM table_name

向數據庫的person表中寫入一行數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = ''' INSERT INTO person VALUES(NULL,'jack',18,'Beijing')

'''

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

寫入多行數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

list = [(None,'jack',18,'beijing'),(None,'bob',20,'shanghai'),(None,'alice',10,'beijing'),(None,'luna',18,'shengzheng')]

with con.cursor()as cursor:

cursor.executemany('INSERT INTO person VALUES(%s,%s,%s,%s)',list)

con.commit()

con.close()

查找所有數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = 'SELECT * FROM person'

with con.cursor()as cursor:

cursor.execute(sql)

data = cursor.fetchall()

for i in data:

print(i)

con.close()

查找所有地址為beijing的數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "SELECT * FROM person where address = 'beijing'"

with con.cursor()as cursor:

cursor.execute(sql)

data = cursor.fetchall()

for i in data:

print(i)

con.close()

查找所有age大于10的數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "SELECT * FROM person where age > 10"

with con.cursor()as cursor:

cursor.execute(sql)

data = cursor.fetchall()

for i in data:

print(i)

con.close()

查找age大于10并且address等于bejing的數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "SELECT * FROM person where age > 10 AND address = 'beijing'"

with con.cursor()as cursor:

cursor.execute(sql)

data = cursor.fetchall()

for i in data:

print(i)

con.close()

將所有數據按年齡大小進行逆序排序

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "SELECT * FROM person ORDER BY age DESC"

with con.cursor()as cursor:

cursor.execute(sql)

data = cursor.fetchall()

for i in data:

print(i)

con.close()

修改表中jack的age為16

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "UPDATE person set age = 16 WHERE name = 'jack'"

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

刪除數據庫中jack的數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "DELETE FROM person WHERE name = 'jack'"

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

刪除表中所有數據

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = "DELETE FROM person"

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

向表中添加sex列,類型為varchar

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = '''ALTER TABLE person

ADD sex VARCHAR(255)

'''

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

刪除表

import pymysql

con = pymysql.connect('localhost','root','123456')

con.select_db('test')

sql = '''DROP TABLE person

'''

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

刪除數據庫

import pymysql

con = pymysql.connect('localhost','root','123456')

sql = '''DROP DATABASE test

'''

with con.cursor()as cursor:

cursor.execute(sql)

con.commit()

con.close()

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的pymysql建表_Python数据库操作,针对pymysql 和 MYSQL数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月婷婷狠狠 | 福利姬在线观看 | 日本xxxxxxxxx | 在线观看国产网站 | 欧美91视频 | 日韩精品av一区二区三区 | 亚洲二区在线观看 | 91av视频网站 | 波岛野结衣 | 成人免费在线看片 | 精品视频网站 | 日韩区一区二 | 91精品毛片 | 88av.com| 亚洲free性xxxx护士hd | 久久精品国产亚洲AV无码麻豆 | 久久精精品久久久久噜噜 | 日本aⅴ视频 | 亚洲图片一区二区 | 亚洲精华国产精华精华液网站 | 熟妇人妻无乱码中文字幕真矢织江 | 欧美日韩经典 | 中文字幕国产视频 | 99国产精品久久久久久久 | 人妖一级片 | 精品一区二区三区在线播放 | 国产精品国产三级国产专区52 | 天堂中文资源在线 | 欧美整片在线观看 | 制服丝袜中文字幕在线 | 91丨porny丨海角社区 | 欧美一级爽aaaaa大片 | 十大污视频 | 黄色一级国产 | 双性娇喘浑圆奶水h男男漫画 | 一级片在线观看免费 | 一个色在线 | 成人视屏在线观看 | 丰满肉肉bbwwbbww | 亚洲熟妇无码爱v在线观看 九色福利 | 亚洲免费网站在线观看 | 国产精品乱码一区二区 | 熟妇大屁股一区二区三区视频 | 欧美性猛交xxxx久久久 | 日韩国产欧美综合 | 色呦呦国产 | 久久cao| 亚洲熟女综合色一区二区三区 | 伊人av网站 | 香蕉网站在线 | 国产精品一区二区人人爽 | 午夜天堂在线 | 国产视频在线观看一区 | 日本一级片免费看 | 国产一区二区a | 成人hd| 电家庭影院午夜 | 嫩草视屏 | 日韩福利一区二区 | 艳妇臀荡乳欲伦交换h漫 | 深夜激情网站 | 日本精品一区 | 欧美日本韩国在线 | 亚洲91网 | 毛片直接看| 制服丝袜av在线播放 | 中文字幕一区二区三区久久久 | www嫩草 | 国产一级久久久久毛片精品 | 六月婷婷激情网 | 日本羞羞网站 | 国产女同91疯狂高潮互磨 | 欧美图片一区二区三区 | 欧美日韩第一页 | 九七超碰在线 | 一区二区韩国 | 久久久久久久久久久久国产 | 国产视频日韩 | 亚洲欧美另类图片 | 精品成人av | 青青草原国产视频 | 欧美性爱视频久久 | 97在线观看视频 | 亚洲热在线观看 | 美女在线观看视频 | 欧美性大战久久久久xxx | 欧美成人一二三 | www.精品视频| 小箩莉末发育娇小性色xxxx | 污污视频免费网站 | 亚洲免费观看在线 | 国产一级不卡毛片 | 成人性生活免费视频 | 亚洲午夜久久久 | 免费成人美女女 | 嫩草网站入口 | 欧美久久久久久久久久久久 | 玖玖伊人 | 国产精品一卡二卡 |