當前位置:首頁 » 編程語言 » python欄位判斷

python欄位判斷

發布時間: 2022-12-08 10:10:22

python實現mysql插入數據時,判斷是否存在,不存在就插入,重復跳過

方案一:使用ignore關鍵字
如果是用主鍵primary或者唯一索引unique區分了記錄的唯一性,避免重復插入記錄可以使用:
insert ignore into table_name(email,phone,user_id) values('[email protected]','99999','9999'),這樣當有重復記
錄就會忽略,執行後返回數字0,還有個應用就是復製表,避免重復記錄:
insert ignore into table(name) select name from table2
方案二:使用Replace
replace的語法格式為:
1. replace into table_name(col_name, ...) values(...)
2. replace into table_name(col_name, ...) select ...
3. replace into table_name set col_name=value, ...
演算法說明:
REPLACE的運行與INSERT很相像,但是如果舊記錄與新記錄有相同的值,則在新記錄被插入之前,舊記錄被刪除,即:
1. 嘗試把新行插入到表中
2. 當因為對於主鍵或唯一關鍵字出現重復關鍵字錯誤而造成插入失敗時:
從表中刪除含有重復關鍵字值的沖突行
再次嘗試把新行插入到表中
舊記錄與新記錄有相同的值的判斷標准就是:表有一個PRIMARY KEY或UNIQUE索引,否則,使用一個REPLACE語句沒有意義
。該語句會與INSERT相同,因為沒有索引被用於確定是否新行復制了其它的行。
返回值:
REPLACE語句會返回一個數,來指示受影響的行的數目。該數是被刪除和被插入的行數的和。
受影響的行數可以容易地確定是否REPLACE只添加了一行,或者是否REPLACE也替換了其它行:檢查該數是否為1(添加)或
更大(替換)。
示例:
eg:(phone欄位為唯一索引)
replace into table_name(email,phone,user_id) values('test569','99999','123')
另外:在 SQL Server 中可以這樣處理:
if not exists (select phone from t where phone= '1')
insert into t(phone, update_time) values('1', getdate())
else
update t set update_time = getdate() where phone= '1'
更多信息請看:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#replace
方案三:ON DUPLICATE KEY UPDATE
如‍上所寫,你也可以在INSERT INTO.....後面加上 ON DUPLICATE KEY UPDATE方法來實現。
如果您指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引
或PRIMARY KEY中出現重復值,
則執行舊行UPDATE。例如,如果列a被定義為UNIQUE,並且包含值1,則以下兩個語句具有相
同的效果:
mysql>INSERT INTO table (a,b,c) VALUES (1,2,3)
->ON DUPLICATE KEY UPDATE c=c+1;
mysql>UPDATE table SET c=c+1 WHERE a=1;
如果行作為新記錄被插入,則受影響行的值為1;如果原有的記錄被更新,則受影響行的值為2。
注釋:如果列b也是唯一列,則INSERT與此UPDATE語句相當:
mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
如果a=1 OR b=2與多個行向匹配,則只有一個行被更新。通常,您應該盡量避免對帶有多個唯一關鍵字的表使用ON DUPLICATE KEY子句。
您可以在UPDATE子句中使用VALUES(col_name)函數從INSERT...UPDATE語句的INSERT部分引用列值。
換句話說,如果沒有發生重復關鍵字沖突,則UPDATE子句中的VALUES(col_name)可以引用被插入的
col_name的值。本函數特別適用於多行插入。VALUES()函數只在INSERT...UPDATE語句中有意義,其它時候
會返回NULL。
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
-> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
本語句與以下兩個語句作用相同:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=3;
mysql> INSERT INTO table (a,b,c) VALUES (4,5,6)
-> ON DUPLICATE KEY UPDATE c=9;
當您使用ON DUPLICATE KEY UPDATE時,DELAYED選項被忽略。
示例: 這個例子是我在實際項目中用到的:是將一個表的數據導入到另外一個表中,數據的重復性就得考慮(如下)。
唯一索引為:email
INSERT INTO table_name1(title,first_name,last_name,email,phone,user_id,role_id,status,campaign_id)
SELECT '','','',table_name2.email,table_name2.phone,NULL,NULL,'pending',29
FROM table_name2
WHERE table_name2.status = 1
ON DUPLICATE KEY UPDATE table_name1.status = 'pending'
語句的關鍵地方,都已高亮出來~
再貼一個例子:
insert into class select * from class1
ON DUPLICATE KEY UPDATE class.course = class1.course
其它關鍵:DELAYED 做為快速插入,並不是很關心失效性,提高插入性能。
IGNORE 只關注主鍵對應記錄是不存在,無則添加,有則忽略。
特別說明:在MYSQL中UNIQUE 索引將會對null欄位失效,也就是說(a欄位上建立唯一索引):

insert into test(a) values(null)
insert into test(a) values(null)
是可以重復插入的(聯合唯一索引也一樣)。

⑵ python判斷文件內是否存在某字元串

方法:使用 in 方法實現contains的功能:

1 site = 'http://www.jb51.net/'

2 if "jb51" in site:

3 print('site contains jb51')

輸出結果:site contains jb51

⑶ python re模塊如何判斷字元串中包含某些特定字元如文件名中不能包含'','/'等字元,如何檢查

方法有很多,例如使用首尾位置標記^$+非法字元集[^]實現:

regex=r'^[^\/:*?"<>|]+$'#不能為空,不能含有/:*?"<>|等字元
tests=['abc_def',
'abc.def',
'abc/def',
'?"',
'']
matches=[iforiintestsifre.match(regex,i)]
print(matches)

還可以通過負向零寬斷言(?!)等方式實現。

⑷ python中如何判斷指定字元串是否在文件中

#-*-coding:utf-8-*-
__author__='niubiqigai'

executeRecord="niu"
rec=open('py.txt','r+')
lineInfos=rec.readlines()
recordFlag=True
forrowinlineInfos:
print(row.strip().find(executeRecord))
#find函數-1表示找不到匹配內容,其他輸出結果為找到的索引值
ifrow.strip().find(executeRecord)!=-1:
print("%s已經存在!"%(executeRecord))
#記錄過即不再記錄
recordFlag=False
break
ifrecordFlag:
executeRecord='%s '%executeRecord
rec.write(executeRecord)
rec.close()

⑸ Python 判斷問題

你這問題不難,但是要完全寫出來還是需要一點時間。給你一個參考代碼,你可以參照這個思路自己寫。
參考代碼說明:對比兩個Excel中數據,每個Excel中數據有兩列組成,代碼列和名稱列。用Python讀成字典,先比較代碼列是否相等,如果不等列印出來;如果代碼一樣名稱不一樣,也列印出來。
# -*- coding: utf-8 -*-
import xlrd
import xlwt
from xlutils. import
import os,time
import operator

path = r"E:\xx"
#path = raw_input('Input Path: ')
os.chdir(path)
print "Current Workspace: %s"%os.getcwd()

#讀取excel工作表中數據為字典
#字典形式為:{代碼:地名}
def readDictStandard():
#name_check = raw_input('Check Excel Name: ')
filename = (name_check).decode('cp936')
data = xlrd.open_workbook(filename + '.xls',formatting_info = True)

table = data.sheet_by_index(0)
#table = data.sheet_by_name(u'di')
print table.name

cellList_k = []
cellList_v = []
ncols = table.ncols
for col in range(0,ncols):
if not (col % 2):
collist_k = table.col_values(col)
collist_v = table.col_values(col+1)
for cell_k in collist_k:
cellList_k.append(cell_k)
for cell_v in collist_v:
cellList_v.append(cell_v)

check = dict(zip(cellList_k,cellList_v))

num = 0
for key in check:
num += 1
#print str(key),check[key]

print '%d units in check Excel'%num
print '-'*50
return check

def readDictCheck():
#name_check = raw_input('Check Excel Name: ')
filename = (name_check).decode('cp936')
data = xlrd.open_workbook(filename + '.xls',formatting_info = True)

table = data.sheet_by_index(0)
#table = data.sheet_by_name(u'sheet1')
print table.name

cellList_k = []
cellList_v = []
ncols = table.ncols

collist_k = table.col_values(0)
collist_v = table.col_values(1)
for cell_k in collist_k:
cellList_k.append(cell_k)
for cell_v in collist_v:
cellList_v.append(cell_v)

check = dict(zip(cellList_k,cellList_v))

num = 0
for key in check:
num += 1
#print str(key),check[key]

print '%d units in check Excel'%num
print '-'*50
return check

def checkDict(check,standard):
num = 0
for k in sorted(check.keys()):
if k not in standard.keys():
num += 1
print k,check[k]
elif check[k] != standard[k]:
print k,check[k],standard[k]
num += 1
print '%d numbers records'%num

def main():
global name_check
name_check = raw_input('Check Excel Name: ')
check = readDictCheck()
name_check = raw_input('Standard Excel Name: ')
standard = readDictStandard()
time.sleep(1)
checkDict(check,standard)

if __name__ == "__main__":
main()
print '-'*50

⑹ python判斷是否包含某些欄位

str1=「my homework」
if 「home」 in str1:
print "yes"

else:
print "no"

⑺ 怎麼判斷 Python 對象是否包含某個屬性

方法一:通過異常捕捉來實現邏輯

classFooClass:

pass


k=FooClass()

try:

#dosomethingyouneed

printk.att

exceptAttributeErrorase:

#error:hasnotattribute

pass

方法二:調用hasattr方法

hasattr(object, name)
說明:判斷對象object是否包含名為name的特性(hasattr是通過調用getattr(ojbect, name)是否拋出異常來實現的)。
參數object:對象。
參數name:特性名稱。

>>> hasattr(list, 'append')

True

>>> hasattr(list, 'add')

False

方法三:使用dir方法

objlist = dir(k)

if 'att' in objlist:

#do some thing you need

print k.att

else:

#error: has not attribute

pass

⑻ python怎麼判斷json 字元串含有某一個字元

python的string對象沒有contains方法,不用使用string.contains的方法判斷是否包含子字元串,但是python有更簡單的方法來替換contains函數。

方法1:使用 in 方法實現contains的功能:

site = ''
if "jb51" in site:
print('site contains jb51')

輸出結果:site contains jb51

方法2:使用find函數實現contains的功能

s = "This be a string"
if s.find("is") == -1:
print "No 'is' here!"
else:
print "Found 'is' in the string."

熱點內容
一台伺服器多個同段地址怎麼通訊 發布:2025-01-20 16:45:58 瀏覽:734
i7源碼 發布:2025-01-20 16:40:48 瀏覽:983
抽簽源碼 發布:2025-01-20 16:38:35 瀏覽:62
密碼箱怎麼鎖住 發布:2025-01-20 16:32:17 瀏覽:31
編譯隔離 發布:2025-01-20 16:28:54 瀏覽:358
從哪裡看自己的qq賬號和密碼 發布:2025-01-20 16:22:33 瀏覽:400
sql語句動態 發布:2025-01-20 16:18:22 瀏覽:298
sql表或的語句 發布:2025-01-20 16:00:49 瀏覽:163
西瓜視頻怎麼緩存不了電影了 發布:2025-01-20 16:00:45 瀏覽:890
javatimer 發布:2025-01-20 15:55:56 瀏覽:64