我正在尝试连接到MySQL数据库。
我找到了这个脚本,我试图在我的PC和网络主机上使用它,但它没有显示任何输出。
请查看此代码。我在xampp上运行perl。
#!C:\xampp\perl\bin\perl.exe
print "Content-type: text/html\n\n";
use DBI;
use strict;
my $driver = "localhost";
my $database = "data";
my $dsn = "DBI:$driver:database = $database";
my $userid = "root";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;
我在PHP中使用相同的数据库。
答案 0 :(得分:3)
但它没有显示任何输出。
根据您正在显示的CGI标题判断,我假设您将其作为CGI程序运行。在这种情况下,您没有看到任何输出并不奇怪 - 您没有发送任何输出。
如果你将它作为一个命令行程序运行(并且在跳转到CGI编程之前让它在命令行上工作通常是一个好主意),那么你会看到" Content-Type& #34;头。或者,您可以向程序添加一些输出,看看它是否出现在您的浏览器中。简单的事情:
print 'It works!';
我还想补充一点,CGI看起来已经过时了,而且用Perl编写Web应用程序的方法要好得多(我的意思是更简单,更强大)。您可能希望阅读CGI::Alternatives以了解可用的内容。
更新:
我刚刚在Facebook上看到过这个问题(请不要在不告诉别人的情况下交叉发帖)并且我注意到你的$driver
变量是错误的。如果您要连接到MySQL,那么$driver
应该是" mysql" (以便DBI加载" DBD :: mysql")。
答案 1 :(得分:3)
MySQL驱动程序的DSN如下所示
port
database
和DBI:localhost:database = data
字段是可选的。 (my $dsn = "DBI:mysql:database=$database;host=$driver"
也是可选的,但你不想将其排除在外。)还有一些更深奥的选项,但它们在这里无关紧要
但是你正在提供
;host=$driver
哪个甚至没有指定MySQL连接,所以如果它不起作用我也不会感到惊讶!我不知道这些空间是否合法,但我会将它们留下来与文件保持一致。
您应该将该声明更改为
localhost
如果您愿意,可以删除my $dsn = "DBI:mysql:$database"
(为什么要调用主机名"驱动程序"?),因为print
是默认设置。仅指定数据库名称并使用所有其他字段的默认值的DSN可以简化为
text/plain
首先编写text/html
语句可能更容易生成一些输出。您需要打印print "$DBI::errstr\n"
而不是die
的MIME内容类型标头。现在尝试import openpyxl
wb = openpyxl.load_workbook('filename.xlsx')
#getting the address
address = list(wb.defined_names['metrics'].destinations)
#removing the $ from the address
for sheetname, cellAddress in address:
cellAddress = cellAddress.replace('$','')
#looping through each cell address, extracting it from the tuple and printing it out
worksheet = wb[sheetname]
for i in range(0,len(worksheet[cellAddress])):
for item in worksheet[cellAddress][i]:
print item.value`
代替{{1}},因为后者会写入不会出现在浏览器中的stderr
答案 2 :(得分:-1)
你可以添加:
if ($dbh) {
print 'connect ok';
} else {
print 'connect failed';
}