性夜影院午夜看片,无码精品久久一区二区三区,婷婷成人丁香五月综合激情,校园春色 qvod,性调教室高h学校

使用Python操作SQL Server數(shù)據(jù)庫

如果有條件可以使用遠(yuǎn)程連接或者TeamViewer等工具,操作帶GUI的數(shù)據(jù)庫管理器,實施起來可以很省心。可以直接查看結(jié)果,模板化查詢甚至提示語句錯誤等。

如果是使用linux本地或者ssh訪問SQL?Server數(shù)據(jù)庫的,稍微麻煩點??梢允褂胹qlcmd作為替代工具。后面會介紹。

沒有mysql一樣的show database;命令,所以顯示所有的數(shù)據(jù)庫都比較麻煩。可以使用這條命令:select name from sysobjects where xtype='u'

SQL Server中各個系統(tǒng)表的作用

sysaltfiles????僅在主數(shù)據(jù)庫 保存數(shù)據(jù)庫的文件

syscharsets????僅在主數(shù)據(jù)庫 字符集與排序順序

sysconfigures??僅在主數(shù)據(jù)庫 配置選項

syscurconfigs??僅在主數(shù)據(jù)庫 當(dāng)前配置選項

sysdatabases???僅在主數(shù)據(jù)庫 服務(wù)器中的數(shù)據(jù)庫

syslanguages???僅在主數(shù)據(jù)庫 語言

syslogins??????僅在主數(shù)據(jù)庫 登陸帳號信息

sysoledbusers??僅在主數(shù)據(jù)庫 鏈接服務(wù)器登陸信息

sysprocesses???僅在主數(shù)據(jù)庫 進(jìn)程

sysremotelogins?僅在主數(shù)據(jù)庫 遠(yuǎn)程登錄帳號

syscolumns?????每個數(shù)據(jù)庫 列

sysconstrains??每個數(shù)據(jù)庫 限制

sysfilegroups??每個數(shù)據(jù)庫 文件組

sysfiles???????每個數(shù)據(jù)庫 文件

sysforeignkeys?每個數(shù)據(jù)庫 外部關(guān)鍵字

sysindexs??????每個數(shù)據(jù)庫 索引

sysmenbers?????每個數(shù)據(jù)庫 角色成員

sysobjects?????每個數(shù)據(jù)庫 所有數(shù)據(jù)庫對象

syspermissions?每個數(shù)據(jù)庫 權(quán)限

systypes??????每個數(shù)據(jù)庫 用戶定義數(shù)據(jù)類型

sql cmd(sqlserver客戶端也可以)

直接訪問數(shù)據(jù)庫:

sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DB

示例sqlcmd -S "127.0.0.1" -U "sa" -P "12345678"

遇到查詢操作時提示“對象名無效”的情況:

可能因為沒有選擇數(shù)據(jù)庫,或者數(shù)據(jù)庫里沒有該表。一定要跟上參數(shù)-d。進(jìn)入執(zhí)行模式之后可以輸入自己的SQL語句??梢赃B續(xù)多條,命令最后以GO語句結(jié)尾,是SQL Server的語法。若要提高性能,請在一個 sqlcmd 會話中執(zhí)行盡可能多的操作,而不是在一系列會話中來執(zhí)行這些操作。

輸入/輸出選項-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage],用于指定輸入和輸出代碼頁。代碼頁頁碼是指定已安裝的 Windows 代碼頁的數(shù)值。

代碼頁轉(zhuǎn)換規(guī)則:

如果未指定代碼頁, sqlcmd 會將當(dāng)前代碼頁同時用于輸入文件和輸出文件,除非輸入文件為 Unicode 文件,在此情況下無需進(jìn)行轉(zhuǎn)換。

sqlcmd 自動識別 Big-endian Unicode 和 Little-endian Unicode 輸入文件。 如果已指定 -u 選項,輸出將始終為 Little-endian Unicode。

如果未指定輸出文件,輸出代碼頁將為控制臺代碼頁。借助此方法,可以在控制臺上正確顯示輸出。假定多個輸入文件具有相同的代碼頁??梢詫?Unicode 和非 Unicode 輸入文件混合在一起。在命令提示符處輸入 chcp 以驗證 Cmd.exe 的代碼頁。

-i input_file[,輸入_file2...]

標(biāo)識包含一批 SQL 語句或存儲過程的文件??梢灾付ㄒ错樞蜃x取和處理的多個文件。文件名之間不要使用任何空格。sqlcmd 將首先檢查所有指定的文件是否都存在。如果有一個或多個文件不存在, sqlcmd 將退出。-i 和 -Q/-q 選項是互斥的。

-i C:\<filename>

-i \\<Server>\<Share$>\<filename>

-i "C:\Some Folder\<file name>"

清空表

刪除表:

delete from?表名

清除表中的所有數(shù)據(jù)、保留表結(jié)構(gòu)( 清除表中所有行,保留表結(jié)構(gòu)、與delete類似):

truncate table?表名

比delete速度快,效率高,使用的系統(tǒng)和事務(wù)日志資源少。

刪除表(所有數(shù)據(jù)及表結(jié)構(gòu)):

drop table?表名

pymssql庫

如果使用pymssql庫操作SqlServer連接,基本上就是一把梭。

基本的建立連接:

HOST = '127.0.0.1'

USER = 'USERNAME'

PW = 'PASSWORD'

DB = 'DBNAME'

conn = pymssql.connect(host=HOST, user=USER, password=PW, database=DB)

cursor = conn.cursor()

執(zhí)行SQL語句(查詢):

cursor.execute('SELECT * FROM mytable')

row = cursor.fetchone()

while row:

row = cursor.fetchone()

conn.close()

在操作執(zhí)行SQL語句的函數(shù).execute()的時候,傳入語句不能臨時進(jìn)行拼接,必須是常量或者格式化的變量??赡苁强紤]注入等問題,故意設(shè)定的。

執(zhí)行SQL語句(其他):

cursor.execute("INSERT INTO position VALUES (%s, %s)", (num, address))

conn.commit()

除了查詢語句比較特殊,其他的語句一般都需要額外的使用.commit()進(jìn)行數(shù)據(jù)提交。如果不提交,可以即便語句執(zhí)行了,也沒有結(jié)果返回。此外,連接一開始設(shè)定了自動提交屬性,可以忽略這條。

版權(quán)聲明:轉(zhuǎn)載文章來自公開網(wǎng)絡(luò),版權(quán)歸作者本人所有,推送文章除非無法確認(rèn),我們都會注明作者和來源。如果出處有誤或侵犯到原作者權(quán)益,請與我們聯(lián)系刪除或授權(quán)事宜。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!