可以从Azure App Service初始化数据库

发布于 2025-02-07 15:37:33 字数 1277 浏览 2 评论 0原文

如果我从Visual Studio启动它,我的应用程序可以很好地工作。该应用程序在Azure SQL数据库上工作并创建数据库。但是,如果我在应用程序服务上分发应用程序,则Web应用程序可以正常工作,但是一旦我尝试查询数据库,它就会给我一个错误。错误是:

sqlalchemy.exc.exc.programmingerror :( pyodbc.programmingmmingerror) [SQL Server]无效对象名称'用户'。(208)(SQLEXEXECDIRECTW))

'42S02',[42S02] [Microsoft] [SQL Server的ODBC驱动程序17 ] (例如,首先在本地启动它)一切正常!因此,问题是它不想创建数据库。 我通过以下方式连接到数据库:

server = "bookingserver.database.windows.net"
database = 'bookingdatabase'
username = 'server'
password = #pass here#
driver = '{ODBC Driver 17 for SQL Server}'

odbc_str = 'DRIVER='+driver+';SERVER='+server+';PORT=1433;UID='+username+';DATABASE='+ 
database + ';PWD='+ password
connect_str = 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus(odbc_str)
app.config['SQLALCHEMY_DATABASE_URI'] = connect_str
_db = SQLAlchemy(app)

以:

class Prenotation(_db.Model):
id = _db.Column(_db.Integer, primary_key=True)
hour= _db.Column(_db.String (30))
username = _db.Column(_db.String (30))
code = _db.Column(_db.Integer)

def __init__( self, hour, username, code):
   self.hour = hour
   self.username = username
   self.code = code

初始化数据库:

if __name__ == "__main__": 
  _db.create_all()
  app.run()

I have an application that works perfectly if i start it from visual studio. The application works and creates a database on Azure SQL Database. However if I distribute the application on App Service, the web application works, but as soon as I try to query the database it gives me an error.The error is:

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'users'. (208) (SQLExecDirectW)")

However if I have previously created the database (for example by starting it locally first) everything works perfectly! So the problem is it doesn't want to create the database.
I connect to the database through:

server = "bookingserver.database.windows.net"
database = 'bookingdatabase'
username = 'server'
password = #pass here#
driver = '{ODBC Driver 17 for SQL Server}'

odbc_str = 'DRIVER='+driver+';SERVER='+server+';PORT=1433;UID='+username+';DATABASE='+ 
database + ';PWD='+ password
connect_str = 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus(odbc_str)
app.config['SQLALCHEMY_DATABASE_URI'] = connect_str
_db = SQLAlchemy(app)

And my tables like:

class Prenotation(_db.Model):
id = _db.Column(_db.Integer, primary_key=True)
hour= _db.Column(_db.String (30))
username = _db.Column(_db.String (30))
code = _db.Column(_db.Integer)

def __init__( self, hour, username, code):
   self.hour = hour
   self.username = username
   self.code = code

To initialize the database:

if __name__ == "__main__": 
  _db.create_all()
  app.run()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北斗星光 2025-02-14 15:37:33

您可以对代码进行一些更改。

在此代码中进行一些初始化的数据库更改。

旧代码

if __name__ == "__main__": 
  _db.create_all()
  app.run()

新代码从这个地方移动_db.create_all()。

if __name__ == "__main__": 
  app.run()

感谢 @luiss.black提出的宝贵建议,无法从Azure应用服务中初始化数据库。

You can do some changes to the code.

do some initialize database change in this code.

old code

if __name__ == "__main__": 
  _db.create_all()
  app.run()

new Code move _db.create_all() from this place.

if __name__ == "__main__": 
  app.run()

Thanks to @luiss.black for your valuable suggestion to detect Can't initialize database from Azure App Service.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文