RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[sqlite]

Martin Hope
Emil Aliyev
Asked: 2024-03-13 13:03:09 +0000 UTC

Flask + SQLAlchemy + Sqlite 对象未添加到数据库

  • 5

我会尽量写得很简短,代码会很零碎,我会尽量不写太多。我只想说我在控制台中逐行检查了所有内容,我将在下面附加错误。我有一个有五个字段的类,第一和第五是明确的。

class Article(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    intro = db.Column(db.String(300), nullable=False)
    text = db.Column(db.Text, nullable=False)
    date = db.Column(db.DateTime, default=datetime.utcnow)


    def __repr__(self):
        return '<Article %r>' % (self.id)

对象填写表格:

<form action="/create-article" method="post">
<input type="text" name="title" id="title" class="form-control"></br>
<textarea name="intro" id="intro" class="form-control"></textarea></br>
<textarea name="text" id="text" class="form-control"></textarea></br>
<input type="submit" class="btn btn-success" value="Отправить">

然后使用 post 方法,我只需创建一个填充了字段的对象

def create_article():
    if request.method == 'POST':
        title = request.form['title']
        intro = request.form['intro']
        text = request.form['text']

        article = Article(title=title, intro=intro, text=text)
        with app.app_context():
            try:
                db.session.add(article)
                db.session.commit()
                return redirect('/')
            except:
                return 'Error'
    else:
        return render_template('create-article.html')

起初我很长一段时间无法创建数据库本身,据我了解,新版本的Flask有这样的问题。我阅读了文档,我必须以 with app.app_context(): 不同的方式编写它

这通常意味着您尝试使用当前应用程序所需的功能。要解决此问题,请设置应用程序上下文 with app.app_context()。请参阅文档以获取更多信息。

那么,向数据库添加文章时,这也是唯一的方法。

返回“错误”

我在控制台中逐行尝试了所有内容,该步骤db.session.commit() 出现错误

> sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: article
[SQL: INSERT INTO article (title, intro, text, date) VALUES (?, ?, ?, ?)]
[parameters: ('title', 'intro', 'text', '2024-03-13 04:25:38.283046')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)

但该类的实例已经创建并且可以访问。我附上屏幕截图。日志

当然,我在弄清楚app_context之后创建了数据库

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'

在控制台中,我只是手动将同名行添加到三个字段中进行测试。

显然该文章对象不存在。我恳请你帮我解决这个问题。

sqlite
  • 2 个回答
  • 40 Views
Martin Hope
D. Maksimov
Asked: 2022-09-19 21:10:33 +0000 UTC

SQLConnection:“索引”附近:语法错误

  • 0

我正在用 Lazarus 编写程序。SQLite 中的数据库。当我单击按钮时,我想更新数据库中的数据并执行以下操作:

fAuto.SQLQ.Close;
fAuto.SQLQ.SQL.Clear;
fAuto.SQLQ.SQL.Text := 'update books set ISBN=:ISBN, book_name=:BN, author=:A, original_name=:ON, original_language=:OL, publisher_name=:PN, translator=:T, issue_year=:IY, page_count=:PC, book_count=:BC, book_price=:BP, only_for_reading_room=:OFRR, comment=:C where index=:I';
fAuto.SQLQ.ParamByName('ISBN').AsString := eISBN.Text;
fAuto.SQLQ.ParamByName('BN').AsString := eBookName.Text;
fAuto.SQLQ.ParamByName('A').AsString := eAuthor.Text;
fAuto.SQLQ.ParamByName('ON').AsString := eOriginalName.Text;
fAuto.SQLQ.ParamByName('OL').AsString := eOriginalLanguage.Text;
fAuto.SQLQ.ParamByName('PN').AsString := ePublisherName.Text;
fAuto.SQLQ.ParamByName('T').AsString := eTranslator.Text;
fAuto.SQLQ.ParamByName('IY').AsString := eIssueYear.Text;
fAuto.SQLQ.ParamByName('PC').AsInteger := ePageCount.Value;
fAuto.SQLQ.ParamByName('BC').AsInteger := eBookCount.Value;
fAuto.SQLQ.ParamByName('BP').AsString := eBookPrice.Text;
fAuto.SQLQ.ParamByName('OFRR').AsBoolean := eOFRR.Checked;
fAuto.SQLQ.ParamByName('C').AsString := eComment.Lines.Text;
fAuto.SQLQ.ParamByName('I').AsInteger := strtoint(eIndex.Text);
fAuto.SQLQ.ExecSQL;
fAuto.SQLTransaction.Commit;
fAuto.SQLQ.Close;

按下按钮后,程序停在 fAuto.SQLQ.ExecSQL 并给出错误

SQLConnection:“索引”附近:语法错误

书籍表的结构: 表结构

sqlite
  • 0 个回答
  • 0 Views
Martin Hope
MrKey8840
Asked: 2022-08-22 17:25:12 +0000 UTC

无法从 sqlite 表中获取数据

  • 0

写作:

post = cur.execute("""SELECT id FROM ochered""")
print(post)

我得到:

<sqlite3.Cursor object at 0x0000000003E0FB20>

所有代码:

import config
import json

from aiogram import Bot, Dispatcher, executor, types
import sqlite3 as sq
import asyncio
import aioschedule

bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)

global base, cur
base = sq.connect('ochered.db')
cur = base.cursor()

async def on_startup(_):
    scheduler()
    
async def scheduler():
    aioschedule.every(1).minutes.do(public)
    while True:
        await aioschedule.run_pending()
        await asyncio.sleep(1)

@dp.message_handler(content_types=['photo', 'video'])
async def dobavlenie(message: types.Message):
    base.execute('CREATE TABLE IF NOT EXISTS ochered(id, type)')
    if message.photo:
        params = ( message.photo[0].file_id, 'photo')
    elif message.video:
        params = ( message.video.file_id, 'video')
    cur.execute('INSERT INTO ochered VALUES (?, ?)', params)
    base.commit()
    
#@dp.message_handler()
async def dobavlenie(message: types.Message):
    chmo = cur.fetchone()
    print(chmo)

@dp.message_handler()
async def public(message: types.Message):
    post = cur.execute("""SELECT id FROM ochered""")
    print(post)
    #await bot.send_photo( chat_id = config.chat_id, photo = post[0])
    #cur.execute('DELETE id FROM ochered WHERE ROW_NOMBER == 1')
executor.start_polling(dp, skip_updates=True)
python sqlite
  • 1 个回答
  • 25 Views
Martin Hope
MrKey8840
Asked: 2022-08-18 18:53:16 +0000 UTC

SQLite 不能在 aiogram 中工作

  • 0

写作:

@dp.message_handler(text = 'Проверка')
async def privet(message: types.Message):
   cur.execute("SELECT id FROM podpiska WHERE dt == datetime.date.today().day AND oplata == 0")
   result = cur.fetchall()
   await bot.send_message(result)

分发:

  File "C:\Users\Anna\Desktop\python\рр\bot.py", line 33, in privet
    cur.execute("SELECT id FROM podpiska WHERE dt == datetime.date.today().day A
ND oplata == 0")
sqlite3.OperationalError: near "(": syntax error
python sqlite
  • 1 个回答
  • 26 Views
Martin Hope
GieGieMan
Asked: 2022-08-14 17:56:43 +0000 UTC

sqlite3 数据库未更新

  • 0

调用该命令时C.send,server.db 数据库应该添加到选定的 id + 1 计数,但这不会发生。可能是什么问题?

import discord
import random
import time
from datetime import datetime,timedelta
from discord.ext import commands
from discord.ext.commands import MissingPermissions
from discord.utils import get
from discord.ext.commands import cooldown, BucketType
import asyncio
import sqlite3
import functools
import operator


bot = commands.Bot(command_prefix = "C.",intents = discord.Intents.all())

@bot.event 
async def on_ready():
       print("Hi!\nBot {NAME} is ready!")
       print('------------------')         
       db = sqlite3.connect('server.db')
       sql = db.cursor()       
       sql.execute("""CREATE TABLE IF NOT EXISTS users (
       id INT,
       name TEXT,
       count INT,
       server_id INT
               
       )""")
       db.commit()
                                                    
       for guild in bot.guilds:     
        guild_id = guild.id
        guild = bot.get_guild(guild_id)
        for member in guild.members:
            role = discord.utils.get(guild.roles, name="role_create")           
            if role not in guild.roles:
                await guild.create_role(name="role_create")
                print(f'Роль для {guild.name} создана!')
                
            if role in member.roles:                
                if sql.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is None:
                    sql.execute(f"INSERT INTO users VALUES ({member.id}, '{member}', 0,  {member.guild.id})")                                                       
                    db.commit()
       else:
        user_id_to_random = []
        for value in sql.execute("SELECT * FROM users"):
            print(value)      
        for user_id_in_sql in sql.execute(f"SELECT id FROM users"):         
            convert = functools.reduce(operator.add, (user_id_in_sql))
            user_id_to_random.append(convert)
        else:                                   
            global r
            r = random.choice(user_id_to_random)


@bot.command()
async def send(ctx):
    sql.execute(f"UPDATE users SET count = count + 1 WHERE id = {r} ")
    db.commit()

bot.run(TOKEN)  
sqlite discord
  • 1 个回答
  • 21 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5