python 連線資料庫以及ORM

2021-08-15 03:29:22 字數 2695 閱讀 5178

資料庫表是乙個二維表,包含多行多列。把乙個表的內容用python的資料結構表示出來的話,可以用乙個list表示多行,list的每乙個元素是tuple,表示一行記錄。

# 定義user物件

class user(object):

# 表的名字

__tablename__='user'

# 表的結構

id = column(string(20),primary_key=true)

name = column(string(20))

匯入sqlalchemy,並初始化dbsession

from sqlalchemy import table,column,integer,string,metadata,foreignkey,create_engine

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker

# 建立物件的基類

base = declarative_base()

# 定義user物件

class user(object):

# 表的名字

__tablename__='user'

# 表的結構

id = column(string(20),primary_key=true)

name = column(string(20))

engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')

# 建立dbsession型別

dbsession = sessionmaker(bind=engine)

以上**完成sqlalchemy的初始化和具體某個表的class的定義,如果有多個表,就繼續定義其他class。

有了orm,向資料庫中新增一行記錄,可以視為新增乙個物件user物件,查詢出來的可以不再是tuple,而是user物件:

新增: 

# 建立session物件

session = dbsession()

# 建立user物件

new_user = user(id='5',name='jack')

# 新增到session:

session.add(new_user)

# 提交即儲存到資料庫

session.commit()

# 關閉session

session.close()

查詢:

session = dbsession()

# 建立query查詢,filter是where條件,最後呼叫one()返回唯一行,如果呼叫all則返回所有行

user = session.query(user).filter(user.id=='5').one()

# 列印

print('type:', type(user))

print('name:',user.name)

orm框架也可以提供兩個框架的一對多、多對多功能。

例:

class

user

(base):

__tablename__='user'

id = column(string(20),primary_key=true)

name = column

(string(20))

# 一對多

books = relationship('book')

class

book

(base):

__tablename__='book'

id = column

(string(20),primary_key=true)

name = column

(string(20))

# "多"的一方的book表是通過外來鍵關聯到user表的:

user_id = column

(string(20), foreignkey('user.id'))

當我們查詢乙個user物件時,該物件的books屬性將返回乙個包含若干book物件的list。

…… 使用python3,其他方式:

import pymysql

conn = pymysql.connect("losotcal","root","","test")

cur = conn.cursor()

name = input()

sql = "select *from student"

insert_sql = "insert into student(name)values('%s')" % (name) # id為auto_increment

cur.execute(insert_sql)

conn.commit()

cur.execute(sql)

result = cur.fetchall()

for row in result:

print(row[0]) #

print(row[1])

conn.close()

python 連線資料庫

原文 原文1 安裝mysql python pip install mysql python dome1 def db mange db bank conn none try 開啟資料庫連線 conn mysqldb.connect localhost root 123456 db bank 獲取操...

Python連線資料庫

usr bin env python coding utf 8 import sys reload sys sys.setdefaultencoding utf 8 import pymysql import pymysql.cursors usr bin env python coding utf...

python連線資料庫

1 安裝mysql ubantu下安裝不撰述 2 安裝python版本的mysql開發包 sudo apt get install python mysqldb3 編寫python usr bin python coding utf 8 import mysqldb 引入mysqldb包 開啟資料庫...