pythonsqlite3是否有表

時間 2021-09-08 04:25:34

1樓:老夭來了

有啊,sqlite3也必須建立資料庫才可以操作,不過它的資料庫是一個檔案,其它的與mysql之類的沒啥區別。

1.匯入python sqlite資料庫模組

python2.5之後,內建了sqlite3,成為了內建模組,這給我們省了安裝的功夫,只需匯入即可

import sqlite3

2. 建立/開啟資料庫

在呼叫connect函式的時候,指定庫名稱,如果指定的資料庫存在就直接開啟這個資料庫,如果不存在就新建立一個再開啟。

cx = sqlite3.connect("e:/test.db")

也可以建立資料庫在記憶體中。

con = sqlite3.connect(":memory:")

3.資料庫連線物件

開啟資料庫時返回的物件cx就是一個資料庫連線物件,它可以有以下操作:

commit()--事務提交

rollback()--事務回滾

close()--關閉一個資料庫連線

cursor()--建立一個遊標

關於commit(),如果isolation_level隔離級別預設,那麼每次對資料庫的操作,都需要使用該命令,你也可以設定isolation_level=none,這樣就變為自動提交模式。

4.使用遊標查詢資料庫

我們需要使用遊標物件sql語句查詢資料庫,獲得查詢物件。 通過以下方法來定義一個遊標。

cu=cx.cursor()

遊標物件有以下的操作:

execute()--執行sql語句

executemany--執行多條sql語句

close()--關閉遊標

fetchone()--從結果中取一條記錄,並將遊標指向下一條記錄

fetchmany()--從結果中取多條記錄

fetchall()--從結果中取出所有記錄

scroll()--遊標滾動

1. 建表

cu.execute("create table catalog (id integer primary key,pid integer,name varchar(10) unique,nickname text null)")

上面語句建立了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不可以重複的,以及一個nickname預設為null。

2. 插入資料

請注意避免以下寫法:

# never do this -- insecure 會導致注入攻擊

pid=200

c.execute("... where pid = '%s'" % pid)

正確的做法如下,如果t只是單個數值,也要採用t=(n,)的形式,因為元組是不可變的。

for t in[(0,10,'abc','yu'),(1,20,'cba','xu')]:

cx.execute("insert into catalog values (?,?,?,?)", t)

簡單的插入兩行資料,不過需要提醒的是,只有提交了之後,才能生效.我們使用資料庫連線物件cx來進行提交commit和回滾rollback操作.

cx.commit()

3.查詢

cu.execute("select * from catalog")

要提取查詢到的資料,使用遊標的fetch函式,如:

in [10]: cu.fetchall()

out[10]: [(0, 10, u'abc', u'yu'), (1, 20, u'cba', u'xu')]

如果我們使用cu.fetchone(),則首先返回列表中的第一項,再次使用,則返回第二項,依次下去.

4.修改

in [12]: cu.execute("update catalog set name='boy' where id = 0")

in [13]: cx.commit()

注意,修改資料以後提交

5.刪除

cu.execute("delete from catalog where id = 1")

cx.commit()

如果解決了您的問題請採納!

如果未解決請繼續追問!

2樓:日time寸

表 是 資料庫必不可少的一部分,sqlite3當然有啦建立表的方法

直接用sql語言

create table database_name.table_name(

column1 datatype  primary key(one or more columns),

column2 datatype,

column3 datatype,

.....

columnn datatype,

);使用python的介面

import sqlite3

conn = sqlite3.connect('test.db')cursor = conn.

cursor()cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')

目前購買PS3是否合適

新80gb硬碟版ps3已經出了快半年了 標配 在2750元左右 比40gb硬碟版ps3是減輕了一些重量,內部結構做了些調整,因為cpu和gpu晶片 都採用65nm的 所以功耗 發熱什麼的比40gb版降低了 有些不實用和不必要的部 件會減少 但質量一樣的 畢竟都是sony的產品。40gb ps3 拆解...

y 3sin 2x3 與y 3sin 2x 2 3 是否相等請詳細說下 謝謝

皮皮鬼 解由y 3sin 2x 2 3 3sin 2x 2 3 3sin 2x 3 即y 3sin 2x 3 與y 3sin 2x 2 3 相等。 相等y 3sin 2x 2 3 3sin 2x 3 3sin 2x 3 3sin 2x 3 3sin 2x 3 3sin 2x 3 求函式y 3sin ...

成雅高速車禍致3死3傷,肇事司機是否存在重大過失?

司機確實存在著過失,但是客觀因素的影響也是非常嚴重的,所以才會導致這一次的事故。肇事司機存在重大過失,聽說是這個司機沒有看紅綠燈,直接就闖過去了,後來就和車子追尾了。這是很大的問題,司機可能是因為疲勞駕駛,造成了路面的車禍,對於司機來說,這就是可怕的。成雅高速發生車禍致3死3傷,當時到底發生了什麼?...