1. 程式人生 > 資料庫 >Python操作PostgreSql資料庫的方法(基本的增刪改查)

Python操作PostgreSql資料庫的方法(基本的增刪改查)

Python操作PostgreSql資料庫(基本的增刪改查)

操作資料庫最快的方式當然是直接用使用SQL語言直接對資料庫進行操作,但是偶爾我們也會碰到在程式碼中操作資料庫的情況,我們可能用ORM類的庫對數控庫進行操作,但是當需要操作大量的資料時,ORM的資料顯的太慢了。在python中,遇到這樣的情況,我推薦使用psycopg2操作postgresql資料庫

psycopg2

官方文件傳送門: http://initd.org/psycopg/docs/index.html

簡單的增刪改查

連線

連線pg並建立表

PG_SQL_LOCAL = {
 'database': 'postgres','user': 'postgres','password': "8dsa581",# 'host':'10.27.78.1','host': 'localhost'
}

def connectPostgreSQL():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 print('connect successful!')
 cursor = conn.cursor()
 cursor.execute('''
 create table public.members(
 id integer not null primary key,name varchar(32) not null,password varchar(32) not null,singal varchar(128)
 )''')
 conn.commit()
 conn.close()
 print('table public.member is created!')

一條一條的增加資料

def insertOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor = conn.cursor()
 cursor.execute("insert into public.member(id,name,password,singal)\
values(1,'member0','password0','signal0')")
 cursor.execute("insert into public.member(id,singal)\
values(2,'member1','password1','signal1')")
 cursor.execute("insert into public.member(id,singal)\
values(3,'member2','password2','signal2')")
 cursor.execute("insert into public.member(id,singal)\
values(4,'member3','password3','signal3')")
 row = conn.fetchone()
 print(row)
 conn.commit()
 conn.close()

 print('insert records into public.memmber successfully')

  • fetchall() 一次性獲取所有資料
  • fetchmany() 一次值提取2000條資料(使用服務端的遊標)
def selectOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor = conn.cursor()
 cursor.execute("select id,singal from public.member where id>2")
 # rows = cursor.fetchall()
 # for row in rows:
 # print('id=',row[0],',name=',row[1],pwd=',row[2],singal=',row[3],)

 while True:
 rows = cursor.fetchmany(2000)
 if not rows:
  break
 for row in rows:
  # print('id=',row['id'],row['name'],row['pwd'],row['singal'],)
  rid,pwd,singal = row
  print(rid,singal)
  # print('id=',)
 conn.close()

更新資料

def updateOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor=conn.cursor()
 result = cursor.execute("update public.member set name='member X' where id=3")
 print(result)
 conn.commit()
 print("Total number of rows updated :",cursor.rowcount)

 cursor.execute("select id,singal from public.member")
 rows=cursor.fetchall()
 for row in rows:
 print('id=','\n')
 conn.close()

刪除資料

def deleteOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor = conn.cursor()

 cursor.execute("select id,singal from public.member")
 rows = cursor.fetchall()
 for row in rows:
 print('id=','\n')

 print('begin delete')
 cursor.execute("delete from public.member where id=2")
 conn.commit()
 print('end delete')
 print("Total number of rows deleted :",'\n')
 conn.close()

補充,增加的欄位帶有時間格式

帶有時間格式是,只需要傳入時間格式的字串(‘2017-05-27')即可,PG會自動識別

cur.execute("INSERT INTO Employee "
  "VALUES('Gopher','China Beijing',100,'2017-05-27')")
# 查詢資料
cur.execute("SELECT * FROM Employee")
rows = cur.fetchall()
for row in rows:
 print('name=' + str(row[0]) + ' address=' + str(row[1]) +
  ' age=' + str(row[2]) + ' date=' + str(row[3]),type(row[3]))

 # 插入資料
 sql = """INSERT INTO Employees VALUES(%s,%s,%s) """
 var = []
 var.append([row[0],row[3]])
 cur.executemany(sql,var)

# 提交事務
conn.commit()

# 關閉連線
conn.close()

到此這篇關於Python操作PostgreSql資料庫(基本的增刪改查)的文章就介紹到這了,更多相關Python操作PostgreSql資料庫內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!