真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python學(xué)習(xí)—數(shù)據(jù)庫操作

python2中操作數(shù)據(jù)庫:MySQLdb
python3中操作數(shù)據(jù)庫:pymysql

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比清河網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式清河網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋清河地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

python接連數(shù)據(jù)庫

1.創(chuàng)建數(shù)據(jù)庫連接:

    mysql.connect()函數(shù)

2.執(zhí)行數(shù)據(jù)庫操作:
執(zhí)行數(shù)據(jù)庫操作,我們要使用連接對象獲得一個cursor(游標(biāo))對象:

用連接對象的cursor()方法返回一個游標(biāo)對象

接下來,我們會使用cursor提供的方法來進(jìn)行工作. 這些方法包括兩大類:1.執(zhí)行命令,2.接收返回值

    執(zhí)行命令:
        callproc(self, procname, args):用來執(zhí)行存儲過程,接收的參數(shù)為存儲過程名和參數(shù)列表,返回值為受影響的行數(shù)
        execute(self, query, args):執(zhí)行單條sql語句,接收的參數(shù)為sql語句本身和使用的參數(shù)列表,返回值為受影響的行數(shù),它執(zhí)行查找語句時的返回值是查找到的記錄條數(shù)。
        executemany(self, query, args):執(zhí)行單挑sql語句,但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù),返回值為受影響的行數(shù)
        nextset(self):移動到下一個結(jié)果集
    接受返回值:
        fetchall(self):接收全部的返回結(jié)果行.返回值也是元組,元組中的元素也是元組
        fetchmany(self, size=None):接收size條返回結(jié)果行.如果size的值大于返回的結(jié)果行的數(shù)量,則會返回cursor.arraysize條數(shù)據(jù).返回結(jié)果時元組,元組的元素是整條記錄的元組
        fetchone(self):返回一條結(jié)果行.游標(biāo)移動到下一條記錄開頭
        scroll(self, value, mode='relative'):移動指針到某一行.
            如果mode='relative',則表示從當(dāng)前所在行移動value條,value可以是負(fù)數(shù),表示向前移動,正數(shù)表示向后移動
            如果mode='absolute',則表示從結(jié)果集的第一行移動value條.value=0則表示結(jié)果集的開頭,
    游標(biāo)屬性:
        游標(biāo)對象.description:返回表的結(jié)構(gòu)(包括字段名等),返回結(jié)果是一個元組,元組內(nèi)元素是每個字段信息構(gòu)成的元組

3.關(guān)閉數(shù)據(jù)庫:

    關(guān)閉數(shù)據(jù)庫前先關(guān)閉游標(biāo):游標(biāo)對象.close()
    關(guān)閉數(shù)據(jù)庫連接:連接對象.close()
1.查詢符合條件的記錄:
select count(*) from tablename where col = 'col';
這種方法性能上有些浪費(fèi),沒必要把全部記錄查出來。
select 1 from tablename where col = 'col' limit 1;
執(zhí)行這條sql語句,所影響的行數(shù)不是0就是1。

特別解釋下limit 1,mysql在找到一條記錄后就不會往下繼續(xù)找了。性能提升很多。
結(jié)論:推薦第二種方式。

2.添加用戶:
create user:沒有任何權(quán)限只能登陸。
添加用戶的同時賦予權(quán)限:grant user

在新添加用戶時候,如果沒有在用戶名后指定本地登陸或者遠(yuǎn)程登陸,這個用戶默認(rèn)是可以遠(yuǎn)程登陸的。
drop user 可以同時刪除多個允許遠(yuǎn)程登陸的用戶(不用跟@'%')。

查看所有用戶
SELECT User, Host, Password FROM mysql.user;
3. mysql的備份與恢復(fù)

備份:

備份數(shù)據(jù)庫mariadb下的所有表到文件mariadbdump
mysqldump -uroot -p mariadb >mariadb.dump
備份數(shù)據(jù)庫mariadb下的所有表的結(jié)構(gòu)到文件mariadbdump,不備份其中的數(shù)據(jù)
mysqldump -uroot -pwestos --no-data mariadb > `date +%Y_%m_%d`_mariadb.dump
備份所有的數(shù)據(jù)庫的所有表到文件mariadbdump
mysqldump -uroot -pwestos --all-databases >mariadb4.dump

恢復(fù):

mysqladmin -uroot -pwestos create mariadb2
mysql -uroot -pwestos mariadb2< mariadb.dump

----->在用python的MysqlDB包對Mysql進(jìn)行insert操作時出現(xiàn)了問題,程序運(yùn)行不報錯,insert語句也沒有問題,但是新的數(shù)據(jù)一直沒有插入到數(shù)據(jù)庫中。在查閱了資料之后,發(fā)現(xiàn)是未提交的原因。
數(shù)據(jù)庫語言可分為四種,

    數(shù)據(jù)操作語言(Date Manipulation Language)DML語言,實(shí)現(xiàn)對數(shù)據(jù)的基本操作,”增刪改”。
        UPDATE DELETE INSERT
    數(shù)據(jù)定義語言(Data Definition Language )DDL語言,可以實(shí)現(xiàn)對數(shù)據(jù)庫結(jié)構(gòu)、操作方法等的定義:
        create table 創(chuàng)建表
        alter table 修改表
        drop table 刪除表
        truncate table 刪除表中所有行
        create index 創(chuàng)建索引
        drop index 刪除索引**
    數(shù)據(jù)庫控制語言(Data Control Language)DCL授權(quán),角色控制
        GRANT 授權(quán)
        REVOKE 取消授權(quán)
    事務(wù)控制語言(Transaction Control Language)事務(wù)控制語言
        SAVEPOINT 設(shè)置保存點(diǎn)
        ROLLBACK 回滾
        SET TRANSACTION

在這之中,DDL語句是自帶commit的,而執(zhí)行DML命令如果沒有提交,將不會被其他會話看到。除非在DML命令之后執(zhí)行了DDL命令或DCL命令,或用戶退出會話,或終止實(shí)例,此時系統(tǒng)會自動發(fā)出commit命令,使未提交的DML命令提交。

所以在執(zhí)行了UPDATE,INSERT操作都執(zhí)行一下提交命令:連接對象.commit()
另外,在連接數(shù)據(jù)庫的時候,有一個默認(rèn)參數(shù):autocommit,它默認(rèn)值為False,在連接數(shù)據(jù)庫的時候設(shè)置這個參數(shù)autocommit=True,就可以不用再調(diào)用commit()方法了。

參考博客:https://blog.csdn.net/lee_zix/article/details/52216126

----->mysql語句中----刪除表數(shù)據(jù)drop、truncate和delete的用法:
程度從強(qiáng)到弱

1、drop  table tb
      drop將表格直接刪除,沒有辦法找回
2、truncate (table) tb
      刪除表中的所有數(shù)據(jù),不能與where一起使用
3、delete from tb (where)
      刪除表中的數(shù)據(jù)(可制定某一行)

區(qū)別:truncate和delete的區(qū)別
         1、事務(wù):truncate是不可以rollback的,但是delete是可以rollback的;
              原因:truncate刪除整表數(shù)據(jù)(ddl語句,隱式提交),delete是一行一行的刪除,可以rollback
         2、效果:truncate刪除后將重新水平線和索引(id從零開始) ,delete不會刪除索引
         3、 truncate 不能觸發(fā)任何Delete觸發(fā)器。
         4、delete 刪除可以返回行數(shù)

來自:https://www.cnblogs.com/shuaiandjun/p/6042600.html

"""

"""

4.查詢所有字段

def list_col(localhost, username, password, database, tabls_name):
    db = pymysql.connect(localhost, username, password, database, charset="utf8")
    cursor = db.cursor()
    cursor.execute("select * from %s" % tabls_name)
    col_name_list = [tuple[0] for tuple in cursor.description]
    db.close()
    return col_name_list

5.列出所有的表

def list_table(localhost, username, password, database):
    db = pymysql.connect(localhost, username, password, database, charset="utf8")
    cursor = db.cursor()
    cursor.execute("show tables")
    table_list = [tuple[0] for tuple in cursor.fetchall()]
    db.close()
    return table_list

例子:


import pymysql as mysql
u = 'root'
p = 'westos'
d = 'python'

# connect函數(shù)創(chuàng)建數(shù)據(jù)庫或者打開數(shù)據(jù)庫,返回一個數(shù)據(jù)庫的連接對象,程序員通過連接對象訪問數(shù)據(jù)庫
conn = mysql.connect(user=u,passwd=p,db=d,charset='utf8',autocommit=True)
#cursor函數(shù)創(chuàng)建一個游標(biāo)
cur = conn.cursor()
#execute函數(shù)執(zhí)行sql語句
try:
    cur.execute('create table employee(id int,name varchar(20),age int,sex enum("男","女"),salary int,department varchar(40));')
    cur.execute('insert into employee values(1,"張三",18,"男",5000,"IT部門"),(3,"李四",20,"男",6000,"市場部"),(2,"小紅",28,"女",10000,"人事部");')
    cur.execute('delete from employee where name="張三";')
    cur.execute('update employee set sex="女" where name ="李四";')
except:
    print("error......11111......")
else:
    print('success....11111......')

li = [(i,'user'+str(i),123456) for i in range(1,21)]
try:
    cur.executemany('insert into users values(%s,%s,%s);',li)
    cur.execute('select * from users;')
except:
    print("error......222......")
else:
    print('success....222......')

#用tmp來接收從數(shù)據(jù)庫查詢到的所有記錄。
tmp = cur.fetchall()
cur.close()
conn.close()
for i in tmp:
    print(i)

分享名稱:Python學(xué)習(xí)—數(shù)據(jù)庫操作
URL鏈接:http://weahome.cn/article/ppccod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部