91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

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

新聞中心

這里有您想知道的互聯網營銷解決方案
Python輕松操作數據庫(python操作數據庫)

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

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

SQLAlchemy庫

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

安裝SQLAlchemy

要使用SQLAlchemy,需要在Python環(huán)境中安裝它。可以通過以下方式安裝:

“`python

!pip install sqlalchemy

“`

連接數據庫

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

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

– 連接的用戶名和密碼

– 數據庫主機和端口

– 數據庫名稱

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

“`python

from sqlalchemy import create_engine

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

“`

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

執(zhí)行SQL查詢

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

下面是一個從本地SQLite數據庫創(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(‘age’, Integer),

)

metadata.create_all(engine)

“`

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

現在,使用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(‘age’, 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()打開一個數據庫連接,該連接可以執(zhí)行SQL查詢。使用conn.execute(select_all)執(zhí)行查詢,并將結果迭代打印到命令行中。

Psycopg2

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

安裝Psycopg2

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

“`python

!pip install psycopg2-binary

“`

連接到數據庫

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

– 主機名、端口號

– 用戶名

– 密碼

– 數據庫名

可以使用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)建了一個數據庫表(employees),并向其添加一些數據。接下來,以選擇所有記錄并打印結果的方式使用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的結果。

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

相關問題拓展閱讀:

  • 在python3下怎樣用flask-sqlalchemy對mysql數據庫操作

在python3下怎樣用flask-sqlalchemy對mysql數據庫操作

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

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、數據操作(增刪改查)

代碼如下:

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’).scalar() # and

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

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

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’).limit(1).scalar() == 1 # 可以用 limit() 限制 count() 的返回數

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

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

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() # 寫數據庫,但并不提交

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)

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

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

的《Flask

Web開發(fā)》一書),告訴了我們如何使用flask-sqlalchemy操作sqlite,但在生產環(huán)境(線上網站)上,我們肯定是則返肆使用MySQL或其

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

結果我們照葫蘆畫瓢的來一下,發(fā)現壓根不行,寫好的網站一跟數據庫沾邊就報錯。

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

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

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

python」。

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

pip install PyMySQL

之后,數據庫連接由:

改為

mysql+

就可以了。

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

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


當前名稱:Python輕松操作數據庫(python操作數據庫)
鏈接分享:http://m.jiaoqi3.com/article/ccosghs.html