Skip to content

Commit e5d18a5

Browse files
author
lan-air
committed
完善 aiosqlite 异步数据库驱动
1 parent d25a921 commit e5d18a5

File tree

3 files changed

+15
-18
lines changed

3 files changed

+15
-18
lines changed

database.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from sqlalchemy.ext.asyncio import create_async_engine
66
from sqlalchemy.ext.asyncio.session import AsyncSession
77

8-
98
engine = create_async_engine("sqlite+aiosqlite:///database.db")
109

1110
Base = declarative_base()

main.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,15 @@
33
import uuid
44
import threading
55
import random
6-
76
from fastapi import FastAPI, Depends, UploadFile, Form, File
87
from starlette.requests import Request
98
from starlette.responses import HTMLResponse, FileResponse
10-
import random
119
from starlette.staticfiles import StaticFiles
1210

13-
from sqlalchemy import or_, select, update, delete, create_engine
14-
from sqlalchemy import select, update, delete
11+
from sqlalchemy import or_, select, update, delete
1512
from sqlalchemy.ext.asyncio.session import AsyncSession
1613

17-
from database import engine, get_session, Base, Codes
18-
19-
20-
engine = create_engine('sqlite:///database.db', connect_args={"check_same_thread": False})
21-
Base.metadata.create_all(bind=engine)
14+
from database import get_session, Codes
2215

2316
app = FastAPI()
2417
if not os.path.exists('./static'):
@@ -137,13 +130,14 @@ def ip_error(ip):
137130

138131

139132
@app.get('/select')
140-
async def get_file(code: str, db: Session = Depends(get_db)):
141-
file = db.query(database.Codes).filter(database.Codes.code == code).first()
142-
if file:
143-
if file.type == 'text':
144-
return {'code': code, 'msg': '查询成功', 'data': file.text}
133+
async def get_file(code: str, s: AsyncSession = Depends(get_session)):
134+
query = select(Codes).where(Codes.code == code)
135+
info = (await s.execute(query)).scalars().first()
136+
if info:
137+
if info.type == 'text':
138+
return {'code': code, 'msg': '查询成功', 'data': info.text}
145139
else:
146-
return FileResponse('.' + file.text, filename=file.name)
140+
return FileResponse('.' + info.text, filename=info.name)
147141
else:
148142
return {'code': 404, 'msg': '口令不存在'}
149143

@@ -182,7 +176,7 @@ async def share(text: str = Form(default=None), style: str = Form(default='2'),
182176
query = select(Codes).where(or_(Codes.exp_time < datetime.datetime.now(), Codes.count == 0))
183177
exps = (await s.execute(query)).scalars().all()
184178
threading.Thread(target=delete_file, args=([[{'type': old.type, 'text': old.text}] for old in exps],)).start()
185-
179+
186180
exps_ids = [exp.id for exp in exps]
187181
query = delete(Codes).where(Codes.id.in_(exps_ids))
188182
await s.execute(query)

requirements.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
fastapi[all]==0.88.0
1+
fastapi==0.88.0
22
aiosqlite==0.17.0
33
SQLAlchemy==1.4.44
4+
python-multipart==0.0.5
5+
uvicorn==0.15.0
6+
greenlet==2.0.1
7+
starlette~=0.22.0

0 commit comments

Comments
 (0)