日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python輕松操作數(shù)據(jù)庫(python操作數(shù)據(jù)庫)

作為目前更受歡迎的編程語言之一,Python已經(jīng)成為了許多開發(fā)人員的首選語言。Python的優(yōu)點包括代碼易讀、語法簡單、大量支持庫等優(yōu)點。與此同時,Python的生態(tài)系統(tǒng)也非常豐富,包含了大量的第三方庫,可用于執(zhí)行各種各樣的任務(wù)。

其中,Python在操作數(shù)據(jù)庫方面表現(xiàn)得尤為出色。Python可以運用不同的庫連接和操作多種類型的數(shù)據(jù)庫,這使得它成為了數(shù)據(jù)科學家和軟件開發(fā)人員更受歡迎的語言之一。在本文中,我們將介紹在Python中使用SQLAlchemy和Psycopg2庫操作數(shù)據(jù)庫的方法。

SQLAlchemy庫

SQLAlchemy是一個開源Python庫,用于操作關(guān)系數(shù)據(jù)庫。它提供了一種簡單且靈活的方式,用Python語言操作關(guān)系型數(shù)據(jù)庫(SQL數(shù)據(jù)庫)。 SQLalchemy被廣泛應(yīng)用于Web應(yīng)用程序中,如Flask、Django、Bottle等框架。SQLAlchemy通過ORM,提供了一種類似于SQL語言的操作方式。

安裝SQLAlchemy

要使用SQLAlchemy,需要在Python環(huán)境中安裝它??梢酝ㄟ^以下方式安裝:

“`python

!pip install sqlalchemy

“`

連接數(shù)據(jù)庫

在使用SQLAlchemy庫之前,必須先建立與數(shù)據(jù)庫的連接。為此,需要定義數(shù)據(jù)庫的URL,該URL包含以下元素:

– 數(shù)據(jù)庫引擎(dialect) – 在SqlAlchemy中,這通常是一個帶Chrome或mysql的名稱

– 連接的用戶名和密碼

– 數(shù)據(jù)庫主機和端口

– 數(shù)據(jù)庫名稱

下面是一個連接到SQL服務(wù)器的示例:

“`python

from sqlalchemy import create_engine

engine = create_engine(‘mssql+pyodbc://user:pass@dns’)

“`

在上面的示例中,創(chuàng)建了一個SQLAlchemy引擎,以便使用ODBC連接來連接到SQL服務(wù)器。可以將engine變量用于打開數(shù)據(jù)庫連接的控制。完成之后,就可以使用SQLAlchemy來執(zhí)行SQL操作。

執(zhí)行SQL查詢

可使用SQLAlchemy CRUD(CRUD(Create, Read, Update, Delete)操作。

下面是一個從本地SQLite數(shù)據(jù)庫創(chuàng)建表格的示例:

“`python

from sqlalchemy import create_engine, Table, Column, Integer, MetaData

engine = create_engine(‘sqlite:///some.db’)

metadata = MetaData()

table = Table(‘mytable’, metadata,

Column(‘id’, Integer, primary_key=True),

Column(‘name’, String),

Column(‘a(chǎn)ge’, Integer),

)

metadata.create_all(engine)

“`

在上面的示例中,安裝并創(chuàng)建Meta到和表的定義。這個表在SQLite數(shù)據(jù)庫中使用用戶ID、名稱和年齡列創(chuàng)建一個列。結(jié)果表User是由元數(shù)據(jù)對象的調(diào)用創(chuàng)建的。調(diào)用metadata.create_all(engine)將表創(chuàng)建到已定義的數(shù)據(jù)庫中。

現(xiàn)在,使用SQLAlchemy來執(zhí)行SQL SELECT語句從User表中選擇所有條目的示例。

“`python

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData

from sqlalchemy.sql import select

engine = create_engine(‘sqlite:///some.db’)

metadata = MetaData()

mytable = Table(‘mytable’, metadata,

Column(‘id’, Integer, primary_key=True),

Column(‘name’, String),

Column(‘a(chǎn)ge’, Integer),

)

conn = engine.connect()

select_st = select([mytable])

result = conn.execute(select_st)

for row in result:

print(row)

“`

在此示例中,從mytable中選擇了所有條目,每個條目都包含一個id、name和age字段。然后使用engine.connect()打開一個數(shù)據(jù)庫連接,該連接可以執(zhí)行SQL查詢。使用conn.execute(select_all)執(zhí)行查詢,并將結(jié)果迭代打印到命令行中。

Psycopg2

與SQLAlchemy一樣,Psycopg2是一種與Python庫兼容的PostgreSQL數(shù)據(jù)庫開發(fā)庫。它可以用來連接、查詢、讀寫和管理PostgreSQL數(shù)據(jù)庫。一些典型的應(yīng)用場景包括后端開發(fā)、數(shù)據(jù)科學、數(shù)據(jù)分析、GIS、Web應(yīng)用程序和云計算等。

安裝Psycopg2

在Python環(huán)境中,可以使用以下安裝psycopg2:

“`python

!pip install psycopg2-binary

“`

連接到數(shù)據(jù)庫

連接到PostgreSQL數(shù)據(jù)庫與連接到其他數(shù)據(jù)庫類似。類似地,必須指定連接字符串(dsn),該字符串包含以下信息:

– 主機名、端口號

– 用戶名

– 密碼

– 數(shù)據(jù)庫名

可以使用psycopg2.connect()來創(chuàng)建連接:

“`python

import psycopg2

dsn_database = “someDatabase”

dsn_hostname = “mydbinstance.somehost.net”

dsn_port = “5432”

dsn_uid = “someUser”

dsn_pwd = “secret”

conn_string = “host=”+dsn_hostname+” port=”+dsn_port+” dbname=”+dsn_database+” user=”+dsn_uid+” password=”+dsn_pwd

conn = psycopg2.connect(conn_string)

“`

在上面的示例中,將所有連接信息添加到一個連接字符串中,并使用psycopg2.connect()創(chuàng)建連接。

執(zhí)行SQL查詢

下面是一個使用Psycopg2執(zhí)行SQL查詢的示例。在此示例中,創(chuàng)建了一個數(shù)據(jù)庫表(employees),并向其添加一些數(shù)據(jù)。接下來,以選擇所有記錄并打印結(jié)果的方式使用SELECT查詢對表執(zhí)行操作。

“`python

#!/usr/bin/python

import psycopg2

def mn():

conn_string = “host=’localhost’ dbname=’mydatabase’ user=’myusername’ password=’mypassword'”

try:

conn = psycopg2.connect(conn_string)

cursor = conn.cursor()

# 創(chuàng)建employees表

cursor.execute(“CREATE TABLE employees (id SERIAL PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), hire_date DATE)”)

# 插入一個新的employee

cursor.execute(“INSERT INTO employees (first_name,last_name,hire_date) VALUES (‘John’, ‘Doe’, ‘2023-01-01’)”)

# 獲取所有employees

cursor.execute(“SELECT * FROM employees”)

rows = cursor.fetchall()

for row in rows:

print(row)

cursor.close()

conn.close()

except Exception as e:

print(str(e))

if __name__ == “__mn__”:

mn()

“`

在上面的示例中,首先我們創(chuàng)建一個employees表格,它包含id(自增長主鍵),first_name,last_name和hire_date字段。然后,我們添加了一個名為John Doe的新員工。使用SELECT獲取并打印所有employee的結(jié)果。

在本文中,我們介紹了Python中使用SQLAlchemy和Psycopg2庫操作數(shù)據(jù)庫的方法。無論你使用的是何種數(shù)據(jù)庫,都可以使用Python來操作數(shù)據(jù)庫。Python在操作數(shù)據(jù)庫方面的優(yōu)點包括簡潔易讀的代碼、廣泛可用的庫以及可運用不同的庫連接和操作多種類型的數(shù)據(jù)庫等。無論你是數(shù)據(jù)科學家、軟件開發(fā)人員還是其他人員,掌握Python操作數(shù)據(jù)庫的技能對你的工作和學習都非常有幫助。

相關(guān)問題拓展閱讀:

  • 在python3下怎樣用flask-sqlalchemy對mysql數(shù)據(jù)庫操作

在python3下怎樣用flask-sqlalchemy對mysql數(shù)據(jù)庫操作

以 Debian/Ubuntu 為例(請確保有管理員權(quán)限):

1.MySQL

代碼如者粗伍下:

apt-get install mysql-server

apt-get install mysql-client

apt-get install libmysqlclient15-dev

2.python-mysqldb

代碼如下:

apt-get install python-mysqldb

3.easy_install

代碼如下:

wget

python ez_setup.py

4.MySQL-Python

代碼如下:

easy_install MySQL-Python

5.SQLAlchemy

代碼如下:

easy_install SQLAlchemy

6、安裝完成后使用下面代碼測試連接

代碼如下:

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

DB_CONNECT_STRING = ‘mysql+

engine = create_engine(DB_CONNECT_STRING, echo=True)

DB_Session = sessionmaker(bind=engine)

session = DB_Session()

7、數(shù)據(jù)操作(增刪改查)

代碼如下:

from sqlalchemy import func, or_, not_

user = User(name=’a’)

session.add(user)

user = User(name=’b’)

session.add(user)

user = User(name=’a’)

session.add(user)

user = User()

session.add(user)

session.commit()

query = session.query(User)

print query # 顯示SQL 語句

print query.statement # 同上

for user in query: # 遍歷時查詢

print user.name

print query.all() # 返回的是一個類似列表的對象

print query.first().name # 記凳亂錄不存在時,first() 會返回 None

# print query.one().name # 不存在,或有多行記錄時會拋出異常

print query.filter(User.id == 2).first().name

print query.get(2).name # 以主鍵獲取,等效于上句

print query.filter(‘id = 2’).first().name # 支首或持字符串

query2 = session.query(User.name)

print query2.all() # 每行是個元組

print query2.limit(1).all() # 最多返回 1 條記錄

print query2.offset(1).all() # 從第 2 條記錄開始返回

print query2.order_by(User.name).all()

print query2.order_by(‘name’).all()

print query2.order_by(User.name.desc()).all()

print query2.order_by(‘name desc’).all()

print session.query(User.id).order_by(User.name.desc(), User.id).all()

print query2.filter(User.id == 1).scalar() # 如果有記錄,返回之一條記錄的之一個元素

print session.query(‘id’).select_from(User).filter(‘id = 1’).scalar()

print query2.filter(User.id > 1, User.name != ‘a(chǎn)’).scalar() # and

query3 = query2.filter(User.id > 1) # 多次拼接的 filter 也是 and

query3 = query3.filter(User.name != ‘a(chǎn)’)

print query3.scalar()

print query2.filter(or_(User.id == 1, User.id == 2)).all() # or

print query2.filter(User.id.in_((1, 2))).all() # in

query4 = session.query(User.id)

print query4.filter(User.name == None).scalar()

print query4.filter(‘name is null’).scalar()

print query4.filter(not_(User.name == None)).all() # not

print query4.filter(User.name != None).all()

print query4.count()

print session.query(func.count(‘*’)).select_from(User).scalar()

print session.query(func.count(‘1’)).select_from(User).scalar()

print session.query(func.count(User.id)).scalar()

print session.query(func.count(‘*’)).filter(User.id > 0).scalar() # filter() 中包含 User,因此不需要指定表

print session.query(func.count(‘*’)).filter(User.name == ‘a(chǎn)’).limit(1).scalar() == 1 # 可以用 limit() 限制 count() 的返回數(shù)

print session.query(func.sum(User.id)).scalar()

print session.query(func.now()).scalar() # func 后可以跟任意函數(shù)名,只要該數(shù)據(jù)庫支持

print session.query(func.current_timestamp()).scalar()

print session.query(func.md5(User.name)).filter(User.id == 1).scalar()

query.filter(User.id == 1).update({User.name: ‘c’})

user = query.get(1)

print user.name

user.name = ‘d’

session.flush() # 寫數(shù)據(jù)庫,但并不提交

print query.get(1).name

session.delete(user)

session.flush()

print query.get(1)

session.rollback()

print query.get(1).name

query.filter(User.id == 1).delete()

session.commit()

print query.get(1)

唔,貌似題主問題已經(jīng)解決了,挺好的。我還是答一下,給后續(xù)需要的新手一點幫助。

這個問題經(jīng)常難道新手一下,因為大部分教程里(包括經(jīng)典

的《Flask

Web開發(fā)》一書),告訴了我們?nèi)绾问褂胒lask-sqlalchemy操作sqlite,但在生產(chǎn)環(huán)境(線上網(wǎng)站)上,我們肯定是則返肆使用MySQL或其

他,而大部分的教程里,又告訴我們flask-sqlalchemy使用MySQL的方式是:

結(jié)果我們照葫蘆畫瓢的來一下,發(fā)現(xiàn)壓根不行,寫好的網(wǎng)站一跟數(shù)據(jù)庫沾邊就報錯。

Python和MySQL是「兩個國家的人」,他們互不相通,因而需要一個中間代理,讓雙方互通有無,跟翻譯一樣(這比喻不準確,但足夠你明白意思就行)。翻譯又有很多選擇,不同的翻譯各有特色。

主解決問題選擇的翻譯是「flask-mysqldb」,其背后的主子是「MySQL-python」。恩,說到這里你應(yīng)該知道,「flask-xxx」

這樣的包都是對背后主子進行了適合Flask封裝的插件,跟包子皮一樣,里面的餡才是重點,「flask-mysqldb」的餡是「MySQL-

python」。

而我要推薦的是另一個翻譯:PyMySQL,這玩意的好處是可以做異步(「MySQL-python」也可以,個人口味罷了),簡而言世悶之,網(wǎng)站訪問量大了就需要考慮異步,現(xiàn)在別管這是啥子。孫轎這玩意的安裝方式是:

pip install PyMySQL

之后,數(shù)據(jù)庫連接由:

改為

mysql+

就可以了。

python 操作數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于python 操作數(shù)據(jù)庫,Python輕松操作數(shù)據(jù)庫,在python3下怎樣用flask-sqlalchemy對mysql數(shù)據(jù)庫操作的信息別忘了在本站進行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


當前文章:Python輕松操作數(shù)據(jù)庫(python操作數(shù)據(jù)庫)
新聞來源:http://www.dlmjj.cn/article/ccosghs.html